OVH Cloud OVH Cloud

Copie d'onglets

17 réponses
Avatar
ONGLET
Petit problème épineux :
Je dois copier plusieurs onglets (65) et les rassembler sous un seul
classeur xls.

Problème :
Les fameux 65 onglets sont présents dans autant de fichiers xls ...

Existe-il / Est-il possible d'automatiser la copie de ses onglets ? ... car
à l'heure actuelle, je dois ouvrir chaque fichier xls, puis faire une copie
de l'onglet vers le classeur où les 65 onglets seront rassembler ... long,
très long.

7 réponses

1 2
Avatar
Vader
J'ai fais le remplacement. Malheureusement j'ai toujours ce problème de non
reconnaissance du fichier.

Losque je lance la macro j'obtiens le message d'erreur suivant :

Run-time error :'1004'
"101050 Omifpro.xls" could not be found. [...]

Et le debuger me pointe la ligne habituelle :
Set Dest = Workbooks.Open(NomComplet)

Lorsque je passe la souris au-dessus de Dest j'obtiens (Dest=Nothing) et
au-dessus de NomComplet (NomComplet="101050 Omifpro.xls") ... et là imposible
d'aller plus loin.


Bonjour Vader,

Utilise cette procédure en remplacement de celle portant le même nom contenuue dans le message d'hier.


'------------------------------
Sub Compilation()

Dim NomFichier As String
Dim Repertoire As String
Dim Wk As Workbook, Depart As String
Repertoire = "c:Excel" 'à déterminer
NomFichier = Dir(Repertoire & "*.xls")

Application.ScreenUpdating = False
Depart = ThisWorkbook.Name
Set Wk = Workbooks.Add

Do While NomFichier <> ""
OuvrirFichier NomFichier, Wk
NomFichier = Dir()
Loop

Application.DisplayAlerts = False
Worksheets(Array("Feuil1", "Feuil2", "Feuil3")).Delete
Application.DisplayAlerts = True
Workbooks(Depart).Activate

End Sub
'------------------------------


Salutations!



"Vader" a écrit dans le message de news:
Bonjour,

Je viens de passer ton code dans un module, cependant il me renvoi une
erreur ...

La ligne : Set Dest = Workbooks.Open(NomComplet) // ne renvoi pas vers un
fichier ... enfin, NomComplet renvoi vers "101050 Omifpro" (le 1er fichier de
la liste), mais Dest renvoi vers "Nothing".

A noter que je travail sous un excel US ...

Merci de ton aide.

Vad'

Ps : Le code que j'ai entré :

'--------------------------------------
Sub Compilation()

Dim NomFichier As String
Dim Repertoire As String
Dim Wk As Workbook, Depart As String
Repertoire = "C:Documents and SettingsatopsentMy DocumentsCPverifier"
'à déterminer
NomFichier = Dir(Repertoire & "*.xls")

Application.ScreenUpdating = False
Depart = ThisWorkbook.Name
Set Wk = Workbooks.Add
Do
OuvrirFichier NomFichier, Wk
'NomFichier = Dir()
NomFichier = ""
Loop While NomFichier <> ""
Application.DisplayAlerts = False
Worksheets(Array("Sheet1", "Sheet2", "Sheet3")).Delete
Application.DisplayAlerts = True
Workbooks(Depart).Activate

End Sub
'--------------------------------------

Sub OuvrirFichier(NomComplet As String, Wk As Workbook)
Dim Dest As Workbook, Feuille As String
Set Dest = Workbooks.Open(NomComplet)
Feuille = TrouverLaFeuille(Dest)
If Feuille <> "" Then
Dest.Worksheets(Feuille).Copy _
after:=Wk.Sheets(Wk.Sheets.Count)
Dest.Close False
Else
MsgBox "Impossible de trouver ladite feuille" & _
vbCrLf & "Pour ce classeur : " & Dest.Name & ".", _
vbInformation + vbOKOnly, "Attention"
End If

End Sub
'--------------------------------------

Function TrouverLaFeuille(Wks As Workbook)
Dim Sh As Worksheet
For Each Sh In Wks.Worksheets
If Sh.CodeName = "101050" Then 'à déterminer
TrouverLaFeuille = Sh.Name
Exit Function
End If
Next
End Function
'--------------------------------------






Bonjour Vader,

Voici une procédure qui fera le travail.

Tu copies ce qui suit dans un module standard


Dans cette procédure,
Function TrouverLaFeuille(Wks As Workbook)

Il y a cette ligne de code qui doit trouver le " n° de réf interne"
If Sh.CodeName = "Feuil1"
Tu dois adapter !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Il est préférable d'être clair lorsque l'on pose une question dans son énoncé. L.'expression que tu utilises : "un n° de réf
interne" , Tu dois être le seul à savoir ce que c'est. Dis comme les gens à qui tu demandes de l'aide peuvent savoir ce que cela
veut dire ?

Renseigne adéquatement le répertoire dans lequel se retrouve tous tes fichiers.

'--------------------------------------
Sub Compilation()

Dim NomFichier As String
Dim Repertoire As String
Dim Wk As Workbook, Depart As String
Repertoire = "c:Atravail" 'à déterminer
NomFichier = Dir(Repertoire & "*.xls")

Application.ScreenUpdating = False
Depart = ThisWorkbook.Name
Set Wk = Workbooks.Add
Do
OuvrirFichier NomFichier, Wk
'NomFichier = Dir()
NomFichier = ""
Loop While NomFichier <> ""
Application.DisplayAlerts = False
Worksheets(Array("Feuil1", "Feuil2", "Feuil3")).Delete
Application.DisplayAlerts = True
Workbooks(Depart).Activate

End Sub
'--------------------------------------

Sub OuvrirFichier(NomComplet As String, Wk As Workbook)
Dim Dest As Workbook, Feuille As String
Set Dest = Workbooks.Open(NomComplet)
Feuille = TrouverLaFeuille(Dest)
If Feuille <> "" Then
Dest.Worksheets(Feuille).Copy _
after:=Wk.Sheets(Wk.Sheets.Count)
Dest.Close False
Else
MsgBox "Impossible de trouver ladite feuille" & _
vbCrLf & "Pour ce classeur : " & Dest.Name & ".", _
vbInformation + vbOKOnly, "Attention"
End If

End Sub
'--------------------------------------

Function TrouverLaFeuille(Wks As Workbook)
Dim Sh As Worksheet
For Each Sh In Wks.Worksheets
If Sh.CodeName = "Feuil1" Then 'à déterminer
TrouverLaFeuille = Sh.Name
Exit Function
End If
Next
End Function
'--------------------------------------



Salutations!



"Vader" a écrit dans le message de news:
Bonjour,

les feuilles ont des noms différents mais avec un n° de réf interne.
La structure est toujours la même.

Le truc s'est d'obtenir un cumul des fichiers de départ dans un sens et
unique fichier (1 onglet par fichier de départ - 65 fichiers -> 65 onglets).
Les onglets doivent être copiés tels quel pour les traitements futurs.

Merci,

Vad'



Bonjour Onglet,

Est-ce que tes feuilles possèdent toutes le même nom ? Ont-ils toutes la même structure des données... si oui quelles sont les
colonnes utilisées ? Désires-tu seulement les données ou les formules des feuilles sources si il y en a dans le fichier final ?
Où sont tes fichiers, Tous dans le même répertoire ?

Salutations!


"ONGLET" a écrit dans le message de news:

Petit problème épineux :
Je dois copier plusieurs onglets (65) et les rassembler sous un seul
classeur xls.

Problème :
Les fameux 65 onglets sont présents dans autant de fichiers xls ...

Existe-il / Est-il possible d'automatiser la copie de ses onglets ? ... car
à l'heure actuelle, je dois ouvrir chaque fichier xls, puis faire une copie
de l'onglet vers le classeur où les 65 onglets seront rassembler ... long,
très long.















Avatar
michdenis
Bonjour Vader,

Dans cette fonction comment as-tu résolu la manière dont cette fonction doit s'y prendre pour trouver le nom de la feuille ?

Dans mon message d'hier, je t'ai mentionnée cela :

"Il est préférable d'être clair lorsque l'on pose une question dans son énoncé. L.'expression que tu utilises : "un n° de réf
interne" , Tu dois être le seul à savoir ce que c'est. Dis comme les gens à qui tu demandes de l'aide peuvent savoir ce que cela
veut dire ?"

Comme je ne sais toujours pas :
Ce qu'est "un n° de réf interne" , où il est situé , comment faire pour le retrouver, comment arriver à extraire le nom de
l'onglet de la feuille à partir de ce numéro, Je ne vois pas comment résoudre la difficulté.

Tu as observé cette ligne de code
If Sh.CodeName = "Feuil1" Then 'à déterminer

Je n'ai pas écrit "à déterminer" pour le plaisir ! Mais je n'ai pas les données me permettant de le définir moi-même.
bonne chance.

'------------------------------------------
Function TrouverLaFeuille(Wks As Workbook)
Dim Sh As Worksheet
For Each Sh In Wks.Worksheets
If Sh.CodeName = "Feuil1" Then 'à déterminer
TrouverLaFeuille = Sh.Name
Exit Function
End If
Next
End Function
'------------------------------------------


Salutations!



"Vader" a écrit dans le message de news:
J'ai fais le remplacement. Malheureusement j'ai toujours ce problème de non
reconnaissance du fichier.

Losque je lance la macro j'obtiens le message d'erreur suivant :

Run-time error :'1004'
"101050 Omifpro.xls" could not be found. [...]

Et le debuger me pointe la ligne habituelle :
Set Dest = Workbooks.Open(NomComplet)

Lorsque je passe la souris au-dessus de Dest j'obtiens (Dest=Nothing) et
au-dessus de NomComplet (NomComplet="101050 Omifpro.xls") ... et là imposible
d'aller plus loin.


Bonjour Vader,

Utilise cette procédure en remplacement de celle portant le même nom contenuue dans le message d'hier.


'------------------------------
Sub Compilation()

Dim NomFichier As String
Dim Repertoire As String
Dim Wk As Workbook, Depart As String
Repertoire = "c:Excel" 'à déterminer
NomFichier = Dir(Repertoire & "*.xls")

Application.ScreenUpdating = False
Depart = ThisWorkbook.Name
Set Wk = Workbooks.Add

Do While NomFichier <> ""
OuvrirFichier NomFichier, Wk
NomFichier = Dir()
Loop

Application.DisplayAlerts = False
Worksheets(Array("Feuil1", "Feuil2", "Feuil3")).Delete
Application.DisplayAlerts = True
Workbooks(Depart).Activate

End Sub
'------------------------------


Salutations!



"Vader" a écrit dans le message de news:
Bonjour,

Je viens de passer ton code dans un module, cependant il me renvoi une
erreur ...

La ligne : Set Dest = Workbooks.Open(NomComplet) // ne renvoi pas vers un
fichier ... enfin, NomComplet renvoi vers "101050 Omifpro" (le 1er fichier de
la liste), mais Dest renvoi vers "Nothing".

A noter que je travail sous un excel US ...

Merci de ton aide.

Vad'

Ps : Le code que j'ai entré :

'--------------------------------------
Sub Compilation()

Dim NomFichier As String
Dim Repertoire As String
Dim Wk As Workbook, Depart As String
Repertoire = "C:Documents and SettingsatopsentMy DocumentsCPverifier"
'à déterminer
NomFichier = Dir(Repertoire & "*.xls")

Application.ScreenUpdating = False
Depart = ThisWorkbook.Name
Set Wk = Workbooks.Add
Do
OuvrirFichier NomFichier, Wk
'NomFichier = Dir()
NomFichier = ""
Loop While NomFichier <> ""
Application.DisplayAlerts = False
Worksheets(Array("Sheet1", "Sheet2", "Sheet3")).Delete
Application.DisplayAlerts = True
Workbooks(Depart).Activate

End Sub
'--------------------------------------

Sub OuvrirFichier(NomComplet As String, Wk As Workbook)
Dim Dest As Workbook, Feuille As String
Set Dest = Workbooks.Open(NomComplet)
Feuille = TrouverLaFeuille(Dest)
If Feuille <> "" Then
Dest.Worksheets(Feuille).Copy _
after:=Wk.Sheets(Wk.Sheets.Count)
Dest.Close False
Else
MsgBox "Impossible de trouver ladite feuille" & _
vbCrLf & "Pour ce classeur : " & Dest.Name & ".", _
vbInformation + vbOKOnly, "Attention"
End If

End Sub
'--------------------------------------

Function TrouverLaFeuille(Wks As Workbook)
Dim Sh As Worksheet
For Each Sh In Wks.Worksheets
If Sh.CodeName = "101050" Then 'à déterminer
TrouverLaFeuille = Sh.Name
Exit Function
End If
Next
End Function
'--------------------------------------






Bonjour Vader,

Voici une procédure qui fera le travail.

Tu copies ce qui suit dans un module standard


Dans cette procédure,
Function TrouverLaFeuille(Wks As Workbook)

Il y a cette ligne de code qui doit trouver le " n° de réf interne"
If Sh.CodeName = "Feuil1"
Tu dois adapter !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Il est préférable d'être clair lorsque l'on pose une question dans son énoncé. L.'expression que tu utilises : "un n° de réf
interne" , Tu dois être le seul à savoir ce que c'est. Dis comme les gens à qui tu demandes de l'aide peuvent savoir ce que
cela
veut dire ?

Renseigne adéquatement le répertoire dans lequel se retrouve tous tes fichiers.

'--------------------------------------
Sub Compilation()

Dim NomFichier As String
Dim Repertoire As String
Dim Wk As Workbook, Depart As String
Repertoire = "c:Atravail" 'à déterminer
NomFichier = Dir(Repertoire & "*.xls")

Application.ScreenUpdating = False
Depart = ThisWorkbook.Name
Set Wk = Workbooks.Add
Do
OuvrirFichier NomFichier, Wk
'NomFichier = Dir()
NomFichier = ""
Loop While NomFichier <> ""
Application.DisplayAlerts = False
Worksheets(Array("Feuil1", "Feuil2", "Feuil3")).Delete
Application.DisplayAlerts = True
Workbooks(Depart).Activate

End Sub
'--------------------------------------

Sub OuvrirFichier(NomComplet As String, Wk As Workbook)
Dim Dest As Workbook, Feuille As String
Set Dest = Workbooks.Open(NomComplet)
Feuille = TrouverLaFeuille(Dest)
If Feuille <> "" Then
Dest.Worksheets(Feuille).Copy _
after:=Wk.Sheets(Wk.Sheets.Count)
Dest.Close False
Else
MsgBox "Impossible de trouver ladite feuille" & _
vbCrLf & "Pour ce classeur : " & Dest.Name & ".", _
vbInformation + vbOKOnly, "Attention"
End If

End Sub
'--------------------------------------

Function TrouverLaFeuille(Wks As Workbook)
Dim Sh As Worksheet
For Each Sh In Wks.Worksheets
If Sh.CodeName = "Feuil1" Then 'à déterminer
TrouverLaFeuille = Sh.Name
Exit Function
End If
Next
End Function
'--------------------------------------



Salutations!



"Vader" a écrit dans le message de news:
Bonjour,

les feuilles ont des noms différents mais avec un n° de réf interne.
La structure est toujours la même.

Le truc s'est d'obtenir un cumul des fichiers de départ dans un sens et
unique fichier (1 onglet par fichier de départ - 65 fichiers -> 65 onglets).
Les onglets doivent être copiés tels quel pour les traitements futurs.

Merci,

Vad'



Bonjour Onglet,

Est-ce que tes feuilles possèdent toutes le même nom ? Ont-ils toutes la même structure des données... si oui quelles sont les
colonnes utilisées ? Désires-tu seulement les données ou les formules des feuilles sources si il y en a dans le fichier final
?
Où sont tes fichiers, Tous dans le même répertoire ?

Salutations!


"ONGLET" a écrit dans le message de news:

Petit problème épineux :
Je dois copier plusieurs onglets (65) et les rassembler sous un seul
classeur xls.

Problème :
Les fameux 65 onglets sont présents dans autant de fichiers xls ...

Existe-il / Est-il possible d'automatiser la copie de ses onglets ? ... car
à l'heure actuelle, je dois ouvrir chaque fichier xls, puis faire une copie
de l'onglet vers le classeur où les 65 onglets seront rassembler ... long,
très long.















Avatar
Vader
3Bonjour,

J'ai fais le remplacement, malheureusement cela ne modifie pas le problème.

Losque je lance la macro j'obtiens toujours le même message d'erreur :

Run-Time Error : '1004'
"101050 OMIFPRO.xls" could not be found.

De plus le debegger me pointe toujours la même ligne de code, dans
OuvrirFichier - Ligne 3 :
Set Dest = Workbooks.Open(NomComplet)

Avec comme indication que Dest = Nothing et que NomComplet = "101050
OMIFPRO.xls"

Alors à priori NomComplet est hors de cause, mais Dest refuse de prendre sa
valeur ... si j'ai bien compris le sens de ton code Dest est cencé prendre la
valeur de NomComplet ... et pas Nothing. Ahem ... je dit ça mais là je suis
très loin de mon domaine de compétence :-)

Ps : J'ai aussi eu un message d'erreur sur la méthode utilisée pour suprimer
les onglet de base du classeur ... j'ai modifié les noms Feuil1=Sheet1 et
j'ai retiré le Sheet3/Feuil3 (Excel refuse de supprimer les 3 onglets en même
temps.).


Bonjour Vader,

Utilise cette procédure en remplacement de celle portant le même nom contenuue dans le message d'hier.


'------------------------------
Sub Compilation()

Dim NomFichier As String
Dim Repertoire As String
Dim Wk As Workbook, Depart As String
Repertoire = "c:Excel" 'à déterminer
NomFichier = Dir(Repertoire & "*.xls")

Application.ScreenUpdating = False
Depart = ThisWorkbook.Name
Set Wk = Workbooks.Add

Do While NomFichier <> ""
OuvrirFichier NomFichier, Wk
NomFichier = Dir()
Loop

Application.DisplayAlerts = False
Worksheets(Array("Feuil1", "Feuil2", "Feuil3")).Delete
Application.DisplayAlerts = True
Workbooks(Depart).Activate

End Sub
'------------------------------


Salutations!



"Vader" a écrit dans le message de news:
Bonjour,

Je viens de passer ton code dans un module, cependant il me renvoi une
erreur ...

La ligne : Set Dest = Workbooks.Open(NomComplet) // ne renvoi pas vers un
fichier ... enfin, NomComplet renvoi vers "101050 Omifpro" (le 1er fichier de
la liste), mais Dest renvoi vers "Nothing".

A noter que je travail sous un excel US ...

Merci de ton aide.

Vad'

Ps : Le code que j'ai entré :

'--------------------------------------
Sub Compilation()

Dim NomFichier As String
Dim Repertoire As String
Dim Wk As Workbook, Depart As String
Repertoire = "C:Documents and SettingsatopsentMy DocumentsCPverifier"
'à déterminer
NomFichier = Dir(Repertoire & "*.xls")

Application.ScreenUpdating = False
Depart = ThisWorkbook.Name
Set Wk = Workbooks.Add
Do
OuvrirFichier NomFichier, Wk
'NomFichier = Dir()
NomFichier = ""
Loop While NomFichier <> ""
Application.DisplayAlerts = False
Worksheets(Array("Sheet1", "Sheet2", "Sheet3")).Delete
Application.DisplayAlerts = True
Workbooks(Depart).Activate

End Sub
'--------------------------------------

Sub OuvrirFichier(NomComplet As String, Wk As Workbook)
Dim Dest As Workbook, Feuille As String
Set Dest = Workbooks.Open(NomComplet)
Feuille = TrouverLaFeuille(Dest)
If Feuille <> "" Then
Dest.Worksheets(Feuille).Copy _
after:=Wk.Sheets(Wk.Sheets.Count)
Dest.Close False
Else
MsgBox "Impossible de trouver ladite feuille" & _
vbCrLf & "Pour ce classeur : " & Dest.Name & ".", _
vbInformation + vbOKOnly, "Attention"
End If

End Sub
'--------------------------------------

Function TrouverLaFeuille(Wks As Workbook)
Dim Sh As Worksheet
For Each Sh In Wks.Worksheets
If Sh.CodeName = "101050" Then 'à déterminer
TrouverLaFeuille = Sh.Name
Exit Function
End If
Next
End Function
'--------------------------------------






Bonjour Vader,

Voici une procédure qui fera le travail.

Tu copies ce qui suit dans un module standard


Dans cette procédure,
Function TrouverLaFeuille(Wks As Workbook)

Il y a cette ligne de code qui doit trouver le " n° de réf interne"
If Sh.CodeName = "Feuil1"
Tu dois adapter !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Il est préférable d'être clair lorsque l'on pose une question dans son énoncé. L.'expression que tu utilises : "un n° de réf
interne" , Tu dois être le seul à savoir ce que c'est. Dis comme les gens à qui tu demandes de l'aide peuvent savoir ce que cela
veut dire ?

Renseigne adéquatement le répertoire dans lequel se retrouve tous tes fichiers.

'--------------------------------------
Sub Compilation()

Dim NomFichier As String
Dim Repertoire As String
Dim Wk As Workbook, Depart As String
Repertoire = "c:Atravail" 'à déterminer
NomFichier = Dir(Repertoire & "*.xls")

Application.ScreenUpdating = False
Depart = ThisWorkbook.Name
Set Wk = Workbooks.Add
Do
OuvrirFichier NomFichier, Wk
'NomFichier = Dir()
NomFichier = ""
Loop While NomFichier <> ""
Application.DisplayAlerts = False
Worksheets(Array("Feuil1", "Feuil2", "Feuil3")).Delete
Application.DisplayAlerts = True
Workbooks(Depart).Activate

End Sub
'--------------------------------------

Sub OuvrirFichier(NomComplet As String, Wk As Workbook)
Dim Dest As Workbook, Feuille As String
Set Dest = Workbooks.Open(NomComplet)
Feuille = TrouverLaFeuille(Dest)
If Feuille <> "" Then
Dest.Worksheets(Feuille).Copy _
after:=Wk.Sheets(Wk.Sheets.Count)
Dest.Close False
Else
MsgBox "Impossible de trouver ladite feuille" & _
vbCrLf & "Pour ce classeur : " & Dest.Name & ".", _
vbInformation + vbOKOnly, "Attention"
End If

End Sub
'--------------------------------------

Function TrouverLaFeuille(Wks As Workbook)
Dim Sh As Worksheet
For Each Sh In Wks.Worksheets
If Sh.CodeName = "Feuil1" Then 'à déterminer
TrouverLaFeuille = Sh.Name
Exit Function
End If
Next
End Function
'--------------------------------------



Salutations!



"Vader" a écrit dans le message de news:
Bonjour,

les feuilles ont des noms différents mais avec un n° de réf interne.
La structure est toujours la même.

Le truc s'est d'obtenir un cumul des fichiers de départ dans un sens et
unique fichier (1 onglet par fichier de départ - 65 fichiers -> 65 onglets).
Les onglets doivent être copiés tels quel pour les traitements futurs.

Merci,

Vad'



Bonjour Onglet,

Est-ce que tes feuilles possèdent toutes le même nom ? Ont-ils toutes la même structure des données... si oui quelles sont les
colonnes utilisées ? Désires-tu seulement les données ou les formules des feuilles sources si il y en a dans le fichier final ?
Où sont tes fichiers, Tous dans le même répertoire ?

Salutations!


"ONGLET" a écrit dans le message de news:

Petit problème épineux :
Je dois copier plusieurs onglets (65) et les rassembler sous un seul
classeur xls.

Problème :
Les fameux 65 onglets sont présents dans autant de fichiers xls ...

Existe-il / Est-il possible d'automatiser la copie de ses onglets ? ... car
à l'heure actuelle, je dois ouvrir chaque fichier xls, puis faire une copie
de l'onglet vers le classeur où les 65 onglets seront rassembler ... long,
très long.















Avatar
michdenis
Bonjour Vader,

Essaie ceci :

Cependant, la fonction : "Function TrouverLaFeuille(Wks As Workbook)"
ne sait toujours pas comment retrouver la feuille à partir du : "un n° de réf interne"


Salutations!


'---------------------------------
Sub Compilation()

Dim NomFichier As String
Dim Repertoire As String
Dim Wk As Workbook, Depart As String
Repertoire = "c:Excel" 'à déterminer
NomFichier = Dir(Repertoire & "*.xls")

Application.ScreenUpdating = False
Depart = ThisWorkbook.Name
Set Wk = Workbooks.Add

Do While NomFichier <> ""
OuvrirFichier Repertoire & NomFichier, Wk
NomFichier = Dir()
Loop

Application.DisplayAlerts = False
Worksheets(Array("Feuil1", "Feuil2", "Feuil3")).Delete
Application.DisplayAlerts = True
Workbooks(Depart).Activate

End Sub

'---------------------------------
Sub OuvrirFichier(NomComplet As String, Wk As Workbook)
Dim Dest As Workbook, Feuille As String
Set Dest = Workbooks.Open(NomComplet)
Feuille = TrouverLaFeuille(Dest)
If Feuille <> "" Then
Dest.Worksheets(Feuille).Copy _
after:=Wk.Sheets(Wk.Sheets.Count)
Dest.Close False
Else
MsgBox "Impossible de trouver ladite feuille" & _
vbCrLf & "Pour ce classeur : " & Dest.Name & ".", _
vbInformation + vbOKOnly, "Attention"
End If

End Sub

'---------------------------------
Function TrouverLaFeuille(Wks As Workbook)
Dim Sh As Worksheet
For Each Sh In Wks.Worksheets
If Sh.CodeName = "Feuil1" Then 'à déterminer
TrouverLaFeuille = Sh.Name
Exit Function
End If
Next
End Function
'---------------------------------
Avatar
Vader
Bonjour,

Effectivement, la fonction TrouverLaFeuille pose problème, j'ai essayé de
modifier le nom des onglets en simplifiant (appelés "OK") et demandé de
chercher "OK", mais toujours la même erreur...

Alors, je te propose de supprimer cette recherche, on se limite à demander
une copie sans restrictions ... la macro copie tous les onglets qu'elle
rencontre dans un seul fichier. Rien que cela me fera gagner du temps ... et
puis ça va m'obliger à apprendre les macro pour la modifier plus tard.

Merci,

Vad'



Bonjour Vader,

Essaie ceci :

Cependant, la fonction : "Function TrouverLaFeuille(Wks As Workbook)"
ne sait toujours pas comment retrouver la feuille à partir du : "un n° de réf interne"


Salutations!


'---------------------------------
Sub Compilation()

Dim NomFichier As String
Dim Repertoire As String
Dim Wk As Workbook, Depart As String
Repertoire = "c:Excel" 'à déterminer
NomFichier = Dir(Repertoire & "*.xls")

Application.ScreenUpdating = False
Depart = ThisWorkbook.Name
Set Wk = Workbooks.Add

Do While NomFichier <> ""
OuvrirFichier Repertoire & NomFichier, Wk
NomFichier = Dir()
Loop

Application.DisplayAlerts = False
Worksheets(Array("Feuil1", "Feuil2", "Feuil3")).Delete
Application.DisplayAlerts = True
Workbooks(Depart).Activate

End Sub

'---------------------------------
Sub OuvrirFichier(NomComplet As String, Wk As Workbook)
Dim Dest As Workbook, Feuille As String
Set Dest = Workbooks.Open(NomComplet)
Feuille = TrouverLaFeuille(Dest)
If Feuille <> "" Then
Dest.Worksheets(Feuille).Copy _
after:=Wk.Sheets(Wk.Sheets.Count)
Dest.Close False
Else
MsgBox "Impossible de trouver ladite feuille" & _
vbCrLf & "Pour ce classeur : " & Dest.Name & ".", _
vbInformation + vbOKOnly, "Attention"
End If

End Sub

'---------------------------------
Function TrouverLaFeuille(Wks As Workbook)
Dim Sh As Worksheet
For Each Sh In Wks.Worksheets
If Sh.CodeName = "Feuil1" Then 'à déterminer
TrouverLaFeuille = Sh.Name
Exit Function
End If
Next
End Function
'---------------------------------







Avatar
michdenis
Ceci :

'------------------------
Sub Compilation()

Dim NomFichier As String
Dim Repertoire As String
Dim Wk As Workbook, Depart As String
Repertoire = "c:Excel" 'à déterminer
NomFichier = Dir(Repertoire & "*.xls")

Application.ScreenUpdating = False
Depart = ThisWorkbook.Name
Set Wk = Workbooks.Add

Do While NomFichier <> ""
OuvrirFichier Repertoire & NomFichier, Wk
NomFichier = Dir()
Loop

Application.DisplayAlerts = False
Worksheets(Array("Feuil1", "Feuil2", "Feuil3")).Delete
Application.DisplayAlerts = True
Workbooks(Depart).Activate

End Sub

'------------------------
Sub OuvrirFichier(NomComplet As String, Wk As Workbook)
Dim Dest As Workbook, Feuille As String
Set Dest = Workbooks.Open(NomComplet)
Dest.Sheets.Copy _
after:=Wk.Sheets(Wk.Sheets.Count)
Dest.Close False
End Sub
'------------------------


Salutations!





"Vader" a écrit dans le message de news:
Bonjour,

Effectivement, la fonction TrouverLaFeuille pose problème, j'ai essayé de
modifier le nom des onglets en simplifiant (appelés "OK") et demandé de
chercher "OK", mais toujours la même erreur...

Alors, je te propose de supprimer cette recherche, on se limite à demander
une copie sans restrictions ... la macro copie tous les onglets qu'elle
rencontre dans un seul fichier. Rien que cela me fera gagner du temps ... et
puis ça va m'obliger à apprendre les macro pour la modifier plus tard.

Merci,

Vad'



Bonjour Vader,

Essaie ceci :

Cependant, la fonction : "Function TrouverLaFeuille(Wks As Workbook)"
ne sait toujours pas comment retrouver la feuille à partir du : "un n° de réf interne"


Salutations!


'---------------------------------
Sub Compilation()

Dim NomFichier As String
Dim Repertoire As String
Dim Wk As Workbook, Depart As String
Repertoire = "c:Excel" 'à déterminer
NomFichier = Dir(Repertoire & "*.xls")

Application.ScreenUpdating = False
Depart = ThisWorkbook.Name
Set Wk = Workbooks.Add

Do While NomFichier <> ""
OuvrirFichier Repertoire & NomFichier, Wk
NomFichier = Dir()
Loop

Application.DisplayAlerts = False
Worksheets(Array("Feuil1", "Feuil2", "Feuil3")).Delete
Application.DisplayAlerts = True
Workbooks(Depart).Activate

End Sub

'---------------------------------
Sub OuvrirFichier(NomComplet As String, Wk As Workbook)
Dim Dest As Workbook, Feuille As String
Set Dest = Workbooks.Open(NomComplet)
Feuille = TrouverLaFeuille(Dest)
If Feuille <> "" Then
Dest.Worksheets(Feuille).Copy _
after:=Wk.Sheets(Wk.Sheets.Count)
Dest.Close False
Else
MsgBox "Impossible de trouver ladite feuille" & _
vbCrLf & "Pour ce classeur : " & Dest.Name & ".", _
vbInformation + vbOKOnly, "Attention"
End If

End Sub

'---------------------------------
Function TrouverLaFeuille(Wks As Workbook)
Dim Sh As Worksheet
For Each Sh In Wks.Worksheets
If Sh.CodeName = "Feuil1" Then 'à déterminer
TrouverLaFeuille = Sh.Name
Exit Function
End If
Next
End Function
'---------------------------------







Avatar
Vader
Merci Michdenis,

Je vais gagner pas mal de toi grace à toi.

Salutation,

Vad'


Ceci :

'------------------------
Sub Compilation()

Dim NomFichier As String
Dim Repertoire As String
Dim Wk As Workbook, Depart As String
Repertoire = "c:Excel" 'à déterminer
NomFichier = Dir(Repertoire & "*.xls")

Application.ScreenUpdating = False
Depart = ThisWorkbook.Name
Set Wk = Workbooks.Add

Do While NomFichier <> ""
OuvrirFichier Repertoire & NomFichier, Wk
NomFichier = Dir()
Loop

Application.DisplayAlerts = False
Worksheets(Array("Feuil1", "Feuil2", "Feuil3")).Delete
Application.DisplayAlerts = True
Workbooks(Depart).Activate

End Sub

'------------------------
Sub OuvrirFichier(NomComplet As String, Wk As Workbook)
Dim Dest As Workbook, Feuille As String
Set Dest = Workbooks.Open(NomComplet)
Dest.Sheets.Copy _
after:=Wk.Sheets(Wk.Sheets.Count)
Dest.Close False
End Sub
'------------------------


Salutations!





"Vader" a écrit dans le message de news:
Bonjour,

Effectivement, la fonction TrouverLaFeuille pose problème, j'ai essayé de
modifier le nom des onglets en simplifiant (appelés "OK") et demandé de
chercher "OK", mais toujours la même erreur...

Alors, je te propose de supprimer cette recherche, on se limite à demander
une copie sans restrictions ... la macro copie tous les onglets qu'elle
rencontre dans un seul fichier. Rien que cela me fera gagner du temps ... et
puis ça va m'obliger à apprendre les macro pour la modifier plus tard.

Merci,

Vad'



Bonjour Vader,

Essaie ceci :

Cependant, la fonction : "Function TrouverLaFeuille(Wks As Workbook)"
ne sait toujours pas comment retrouver la feuille à partir du : "un n° de réf interne"


Salutations!


'---------------------------------
Sub Compilation()

Dim NomFichier As String
Dim Repertoire As String
Dim Wk As Workbook, Depart As String
Repertoire = "c:Excel" 'à déterminer
NomFichier = Dir(Repertoire & "*.xls")

Application.ScreenUpdating = False
Depart = ThisWorkbook.Name
Set Wk = Workbooks.Add

Do While NomFichier <> ""
OuvrirFichier Repertoire & NomFichier, Wk
NomFichier = Dir()
Loop

Application.DisplayAlerts = False
Worksheets(Array("Feuil1", "Feuil2", "Feuil3")).Delete
Application.DisplayAlerts = True
Workbooks(Depart).Activate

End Sub

'---------------------------------
Sub OuvrirFichier(NomComplet As String, Wk As Workbook)
Dim Dest As Workbook, Feuille As String
Set Dest = Workbooks.Open(NomComplet)
Feuille = TrouverLaFeuille(Dest)
If Feuille <> "" Then
Dest.Worksheets(Feuille).Copy _
after:=Wk.Sheets(Wk.Sheets.Count)
Dest.Close False
Else
MsgBox "Impossible de trouver ladite feuille" & _
vbCrLf & "Pour ce classeur : " & Dest.Name & ".", _
vbInformation + vbOKOnly, "Attention"
End If

End Sub

'---------------------------------
Function TrouverLaFeuille(Wks As Workbook)
Dim Sh As Worksheet
For Each Sh In Wks.Worksheets
If Sh.CodeName = "Feuil1" Then 'à déterminer
TrouverLaFeuille = Sh.Name
Exit Function
End If
Next
End Function
'---------------------------------












1 2