Bonjour
J'ai cette macro qui lit 3 onglets dans les classeurs fermés
mais comment mettre dans la variable Z le nombre exact d'onglets
de chaque classeur pour ne pas avoir d'erreurs dans la récap
merci
ptcck
Public Sub xx()
cellule = "A4,A9,A13, B5,C6,D8"
lign = 1
col = 0
Dossier = "C:\Chemin\"
fichier = Dir(Dossier & "*.xls")
Do While fichier <> ""
For Z = 1 To 3
lign = lign + 1
For i = 0 To UBound(Split(cellule, ","))
col = col + 1
valeur = ExecuteExcel4Macro("'" & Dossier & "[" & fichier & "]Feuil" & Z &
"'!" & _
Range(Split(cellule, ",")(i)).Address(ReferenceStyle:=xlR1C1))
Range(Cells(lign, col), Cells(lign, col)) = valeur
Next
col = 0
Next
fichier = Dir
Loop
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour,
Pour exécuter cette macro, il te faut ajouter une bibliothèque à ton projet VBA. Dans la fenêtre de l'éditeur de code, barre des menus / outils / références / et tu coches : "Microsoft DAO 3.6 Object Library"
'----------------------------- Sub Liste_Des_Noms_Onglets_Comme_Dans_Classeur_Fermer() Dim Classeur As String, ListName
'Pour obtenir le nombre de feuille du classeur fermé : Msgbox Ubound(ListName)
'Pour obtenir la liste des noms de chacune des feuille For A = 0 To UBound(ListName) MsgBox ListName(A) Next End Sub '----------------------------- Function FirstExcelSheetName(Fichier As String) As Variant 'Requiert la bibliothèque suivante : '"Microsoft DAO 3.6 object librairy"
Dim XlDb As DAO.Database, Nb As Integer Dim TbL As DAO.TableDef, List(), L As Integer
Set XlDb = OpenDatabase(Fichier, False, True, "Excel 8.0;") Nb = XlDb.TableDefs.Count - 1 For A = 0 To Nb If InStr(1, XlDb.TableDefs(A).Name, "$", vbTextCompare) > 0 Then ReDim Preserve List(L) x = XlDb.TableDefs(L).Name List(L) = Left(XlDb.TableDefs(L).Name, Len(XlDb.TableDefs(L).Name) - 1) L = L + 1 End If Next FirstExcelSheetName = List XlDb.Close
End Function '-----------------------------
"ptck" a écrit dans le message de groupe de discussion :
Bonjour J'ai cette macro qui lit 3 onglets dans les classeurs fermés mais comment mettre dans la variable Z le nombre exact d'onglets de chaque classeur pour ne pas avoir d'erreurs dans la récap
merci ptcck
Public Sub xx() cellule = "A4,A9,A13, B5,C6,D8" lign = 1 col = 0 Dossier = "C:Chemin" fichier = Dir(Dossier & "*.xls") Do While fichier <> "" For Z = 1 To 3 lign = lign + 1 For i = 0 To UBound(Split(cellule, ",")) col = col + 1 valeur = ExecuteExcel4Macro("'" & Dossier & "[" & fichier & "]Feuil" & Z & "'!" & _ Range(Split(cellule, ",")(i)).Address(ReferenceStyle:=xlR1C1)) Range(Cells(lign, col), Cells(lign, col)) = valeur Next col = 0 Next fichier = Dir Loop End Sub
Bonjour,
Pour exécuter cette macro, il te faut ajouter une bibliothèque
à ton projet VBA. Dans la fenêtre de l'éditeur de code,
barre des menus / outils / références / et tu coches :
"Microsoft DAO 3.6 Object Library"
'-----------------------------
Sub Liste_Des_Noms_Onglets_Comme_Dans_Classeur_Fermer()
Dim Classeur As String, ListName
'Pour obtenir le nombre de feuille du classeur fermé :
Msgbox Ubound(ListName)
'Pour obtenir la liste des noms de chacune des feuille
For A = 0 To UBound(ListName)
MsgBox ListName(A)
Next
End Sub
'-----------------------------
Function FirstExcelSheetName(Fichier As String) As Variant
'Requiert la bibliothèque suivante :
'"Microsoft DAO 3.6 object librairy"
Dim XlDb As DAO.Database, Nb As Integer
Dim TbL As DAO.TableDef, List(), L As Integer
Set XlDb = OpenDatabase(Fichier, False, True, "Excel 8.0;")
Nb = XlDb.TableDefs.Count - 1
For A = 0 To Nb
If InStr(1, XlDb.TableDefs(A).Name, "$", vbTextCompare) > 0 Then
ReDim Preserve List(L)
x = XlDb.TableDefs(L).Name
List(L) = Left(XlDb.TableDefs(L).Name, Len(XlDb.TableDefs(L).Name) - 1)
L = L + 1
End If
Next
FirstExcelSheetName = List
XlDb.Close
End Function
'-----------------------------
"ptck" <nospamptck@Monsitefai.fr> a écrit dans le message de groupe de discussion :
OMEa3oMVKHA.844@TK2MSFTNGP05.phx.gbl...
Bonjour
J'ai cette macro qui lit 3 onglets dans les classeurs fermés
mais comment mettre dans la variable Z le nombre exact d'onglets
de chaque classeur pour ne pas avoir d'erreurs dans la récap
merci
ptcck
Public Sub xx()
cellule = "A4,A9,A13, B5,C6,D8"
lign = 1
col = 0
Dossier = "C:Chemin"
fichier = Dir(Dossier & "*.xls")
Do While fichier <> ""
For Z = 1 To 3
lign = lign + 1
For i = 0 To UBound(Split(cellule, ","))
col = col + 1
valeur = ExecuteExcel4Macro("'" & Dossier & "[" & fichier & "]Feuil" & Z &
"'!" & _
Range(Split(cellule, ",")(i)).Address(ReferenceStyle:=xlR1C1))
Range(Cells(lign, col), Cells(lign, col)) = valeur
Next
col = 0
Next
fichier = Dir
Loop
End Sub
Pour exécuter cette macro, il te faut ajouter une bibliothèque à ton projet VBA. Dans la fenêtre de l'éditeur de code, barre des menus / outils / références / et tu coches : "Microsoft DAO 3.6 Object Library"
'----------------------------- Sub Liste_Des_Noms_Onglets_Comme_Dans_Classeur_Fermer() Dim Classeur As String, ListName
'Pour obtenir le nombre de feuille du classeur fermé : Msgbox Ubound(ListName)
'Pour obtenir la liste des noms de chacune des feuille For A = 0 To UBound(ListName) MsgBox ListName(A) Next End Sub '----------------------------- Function FirstExcelSheetName(Fichier As String) As Variant 'Requiert la bibliothèque suivante : '"Microsoft DAO 3.6 object librairy"
Dim XlDb As DAO.Database, Nb As Integer Dim TbL As DAO.TableDef, List(), L As Integer
Set XlDb = OpenDatabase(Fichier, False, True, "Excel 8.0;") Nb = XlDb.TableDefs.Count - 1 For A = 0 To Nb If InStr(1, XlDb.TableDefs(A).Name, "$", vbTextCompare) > 0 Then ReDim Preserve List(L) x = XlDb.TableDefs(L).Name List(L) = Left(XlDb.TableDefs(L).Name, Len(XlDb.TableDefs(L).Name) - 1) L = L + 1 End If Next FirstExcelSheetName = List XlDb.Close
End Function '-----------------------------
"ptck" a écrit dans le message de groupe de discussion :
Bonjour J'ai cette macro qui lit 3 onglets dans les classeurs fermés mais comment mettre dans la variable Z le nombre exact d'onglets de chaque classeur pour ne pas avoir d'erreurs dans la récap
merci ptcck
Public Sub xx() cellule = "A4,A9,A13, B5,C6,D8" lign = 1 col = 0 Dossier = "C:Chemin" fichier = Dir(Dossier & "*.xls") Do While fichier <> "" For Z = 1 To 3 lign = lign + 1 For i = 0 To UBound(Split(cellule, ",")) col = col + 1 valeur = ExecuteExcel4Macro("'" & Dossier & "[" & fichier & "]Feuil" & Z & "'!" & _ Range(Split(cellule, ",")(i)).Address(ReferenceStyle:=xlR1C1)) Range(Cells(lign, col), Cells(lign, col)) = valeur Next col = 0 Next fichier = Dir Loop End Sub
Ptck
Merci je vais adapter la macro à la mienne ptck
"michdenis" a écrit dans le message de news: %23i0AC%
Bonjour,
Pour exécuter cette macro, il te faut ajouter une bibliothèque à ton projet VBA. Dans la fenêtre de l'éditeur de code, barre des menus / outils / références / et tu coches : "Microsoft DAO 3.6 Object Library"
'----------------------------- Sub Liste_Des_Noms_Onglets_Comme_Dans_Classeur_Fermer() Dim Classeur As String, ListName
'Pour obtenir le nombre de feuille du classeur fermé : Msgbox Ubound(ListName)
'Pour obtenir la liste des noms de chacune des feuille For A = 0 To UBound(ListName) MsgBox ListName(A) Next End Sub '----------------------------- Function FirstExcelSheetName(Fichier As String) As Variant 'Requiert la bibliothèque suivante : '"Microsoft DAO 3.6 object librairy"
Dim XlDb As DAO.Database, Nb As Integer Dim TbL As DAO.TableDef, List(), L As Integer
Set XlDb = OpenDatabase(Fichier, False, True, "Excel 8.0;") Nb = XlDb.TableDefs.Count - 1 For A = 0 To Nb If InStr(1, XlDb.TableDefs(A).Name, "$", vbTextCompare) > 0 Then ReDim Preserve List(L) x = XlDb.TableDefs(L).Name List(L) = Left(XlDb.TableDefs(L).Name, Len(XlDb.TableDefs(L).Name) - 1) L = L + 1 End If Next FirstExcelSheetName = List XlDb.Close
End Function '-----------------------------
"ptck" a écrit dans le message de groupe de discussion :
Bonjour J'ai cette macro qui lit 3 onglets dans les classeurs fermés mais comment mettre dans la variable Z le nombre exact d'onglets de chaque classeur pour ne pas avoir d'erreurs dans la récap
merci ptcck
Public Sub xx() cellule = "A4,A9,A13, B5,C6,D8" lign = 1 col = 0 Dossier = "C:Chemin" fichier = Dir(Dossier & "*.xls") Do While fichier <> "" For Z = 1 To 3 lign = lign + 1 For i = 0 To UBound(Split(cellule, ",")) col = col + 1 valeur = ExecuteExcel4Macro("'" & Dossier & "[" & fichier & "]Feuil" & Z & "'!" & _ Range(Split(cellule, ",")(i)).Address(ReferenceStyle:=xlR1C1)) Range(Cells(lign, col), Cells(lign, col)) = valeur Next col = 0 Next fichier = Dir Loop End Sub
Merci
je vais adapter la macro à la mienne
ptck
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23i0AC%23MVKHA.3404@TK2MSFTNGP04.phx.gbl...
Bonjour,
Pour exécuter cette macro, il te faut ajouter une bibliothèque
à ton projet VBA. Dans la fenêtre de l'éditeur de code,
barre des menus / outils / références / et tu coches :
"Microsoft DAO 3.6 Object Library"
'-----------------------------
Sub Liste_Des_Noms_Onglets_Comme_Dans_Classeur_Fermer()
Dim Classeur As String, ListName
'Pour obtenir le nombre de feuille du classeur fermé :
Msgbox Ubound(ListName)
'Pour obtenir la liste des noms de chacune des feuille
For A = 0 To UBound(ListName)
MsgBox ListName(A)
Next
End Sub
'-----------------------------
Function FirstExcelSheetName(Fichier As String) As Variant
'Requiert la bibliothèque suivante :
'"Microsoft DAO 3.6 object librairy"
Dim XlDb As DAO.Database, Nb As Integer
Dim TbL As DAO.TableDef, List(), L As Integer
Set XlDb = OpenDatabase(Fichier, False, True, "Excel 8.0;")
Nb = XlDb.TableDefs.Count - 1
For A = 0 To Nb
If InStr(1, XlDb.TableDefs(A).Name, "$", vbTextCompare) > 0 Then
ReDim Preserve List(L)
x = XlDb.TableDefs(L).Name
List(L) = Left(XlDb.TableDefs(L).Name,
Len(XlDb.TableDefs(L).Name) - 1)
L = L + 1
End If
Next
FirstExcelSheetName = List
XlDb.Close
End Function
'-----------------------------
"ptck" <nospamptck@Monsitefai.fr> a écrit dans le message de groupe de
discussion :
OMEa3oMVKHA.844@TK2MSFTNGP05.phx.gbl...
Bonjour
J'ai cette macro qui lit 3 onglets dans les classeurs fermés
mais comment mettre dans la variable Z le nombre exact d'onglets
de chaque classeur pour ne pas avoir d'erreurs dans la récap
merci
ptcck
Public Sub xx()
cellule = "A4,A9,A13, B5,C6,D8"
lign = 1
col = 0
Dossier = "C:Chemin"
fichier = Dir(Dossier & "*.xls")
Do While fichier <> ""
For Z = 1 To 3
lign = lign + 1
For i = 0 To UBound(Split(cellule, ","))
col = col + 1
valeur = ExecuteExcel4Macro("'" & Dossier & "[" & fichier & "]Feuil" & Z &
"'!" & _
Range(Split(cellule, ",")(i)).Address(ReferenceStyle:=xlR1C1))
Range(Cells(lign, col), Cells(lign, col)) = valeur
Next
col = 0
Next
fichier = Dir
Loop
End Sub
"michdenis" a écrit dans le message de news: %23i0AC%
Bonjour,
Pour exécuter cette macro, il te faut ajouter une bibliothèque à ton projet VBA. Dans la fenêtre de l'éditeur de code, barre des menus / outils / références / et tu coches : "Microsoft DAO 3.6 Object Library"
'----------------------------- Sub Liste_Des_Noms_Onglets_Comme_Dans_Classeur_Fermer() Dim Classeur As String, ListName
'Pour obtenir le nombre de feuille du classeur fermé : Msgbox Ubound(ListName)
'Pour obtenir la liste des noms de chacune des feuille For A = 0 To UBound(ListName) MsgBox ListName(A) Next End Sub '----------------------------- Function FirstExcelSheetName(Fichier As String) As Variant 'Requiert la bibliothèque suivante : '"Microsoft DAO 3.6 object librairy"
Dim XlDb As DAO.Database, Nb As Integer Dim TbL As DAO.TableDef, List(), L As Integer
Set XlDb = OpenDatabase(Fichier, False, True, "Excel 8.0;") Nb = XlDb.TableDefs.Count - 1 For A = 0 To Nb If InStr(1, XlDb.TableDefs(A).Name, "$", vbTextCompare) > 0 Then ReDim Preserve List(L) x = XlDb.TableDefs(L).Name List(L) = Left(XlDb.TableDefs(L).Name, Len(XlDb.TableDefs(L).Name) - 1) L = L + 1 End If Next FirstExcelSheetName = List XlDb.Close
End Function '-----------------------------
"ptck" a écrit dans le message de groupe de discussion :
Bonjour J'ai cette macro qui lit 3 onglets dans les classeurs fermés mais comment mettre dans la variable Z le nombre exact d'onglets de chaque classeur pour ne pas avoir d'erreurs dans la récap
merci ptcck
Public Sub xx() cellule = "A4,A9,A13, B5,C6,D8" lign = 1 col = 0 Dossier = "C:Chemin" fichier = Dir(Dossier & "*.xls") Do While fichier <> "" For Z = 1 To 3 lign = lign + 1 For i = 0 To UBound(Split(cellule, ",")) col = col + 1 valeur = ExecuteExcel4Macro("'" & Dossier & "[" & fichier & "]Feuil" & Z & "'!" & _ Range(Split(cellule, ",")(i)).Address(ReferenceStyle:=xlR1C1)) Range(Cells(lign, col), Cells(lign, col)) = valeur Next col = 0 Next fichier = Dir Loop End Sub
JB
Bonjour,
Sub NombreFeuillesClasseurFermé() ' Microsoft ActiveX DataObject doit être coché Set cnn = CreateObject("ADODB.Connection") Set cata = CreateObject("ADOX.Catalog") FichXLS = "adosource.xls" cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & repertoire & FichXLS & ";Extended Properties=Excel 8.0;" Set cata.ActiveConnection = cnn MsgBox cata.tables.Count cnn.Close Set cata = Nothing Set cnn = Nothing End Sub
JB http://boisgontierjacques.free.fr/
On 24 oct, 17:51, "ptck" wrote:
Bonjour J'ai cette macro qui lit 3 onglets dans les classeurs fermés mais comment mettre dans la variable Z le nombre exact d'onglets de chaque classeur pour ne pas avoir d'erreurs dans la récap
merci ptcck
Public Sub xx() cellule = "A4,A9,A13, B5,C6,D8" lign = 1 col = 0 Dossier = "C:Chemin" fichier = Dir(Dossier & "*.xls") Do While fichier <> "" For Z = 1 To 3 lign = lign + 1 For i = 0 To UBound(Split(cellule, ",")) col = col + 1 valeur = ExecuteExcel4Macro("'" & Dossier & "[" & fichier & "]Feuil" & Z & "'!" & _ Range(Split(cellule, ",")(i)).Address(ReferenceStyle:=xlR1C1)) Range(Cells(lign, col), Cells(lign, col)) = valeur Next col = 0 Next fichier = Dir Loop End Sub
Bonjour,
Sub NombreFeuillesClasseurFermé()
' Microsoft ActiveX DataObject doit être coché
Set cnn = CreateObject("ADODB.Connection")
Set cata = CreateObject("ADOX.Catalog")
FichXLS = "adosource.xls"
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" &
repertoire & FichXLS & ";Extended Properties=Excel 8.0;"
Set cata.ActiveConnection = cnn
MsgBox cata.tables.Count
cnn.Close
Set cata = Nothing
Set cnn = Nothing
End Sub
JB
http://boisgontierjacques.free.fr/
On 24 oct, 17:51, "ptck" <nospamp...@Monsitefai.fr> wrote:
Bonjour
J'ai cette macro qui lit 3 onglets dans les classeurs fermés
mais comment mettre dans la variable Z le nombre exact d'onglets
de chaque classeur pour ne pas avoir d'erreurs dans la récap
merci
ptcck
Public Sub xx()
cellule = "A4,A9,A13, B5,C6,D8"
lign = 1
col = 0
Dossier = "C:Chemin"
fichier = Dir(Dossier & "*.xls")
Do While fichier <> ""
For Z = 1 To 3
lign = lign + 1
For i = 0 To UBound(Split(cellule, ","))
col = col + 1
valeur = ExecuteExcel4Macro("'" & Dossier & "[" & fichier & "]Feuil" & Z &
"'!" & _
Range(Split(cellule, ",")(i)).Address(ReferenceStyle:=xlR1C1))
Range(Cells(lign, col), Cells(lign, col)) = valeur
Next
col = 0
Next
fichier = Dir
Loop
End Sub
Sub NombreFeuillesClasseurFermé() ' Microsoft ActiveX DataObject doit être coché Set cnn = CreateObject("ADODB.Connection") Set cata = CreateObject("ADOX.Catalog") FichXLS = "adosource.xls" cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & repertoire & FichXLS & ";Extended Properties=Excel 8.0;" Set cata.ActiveConnection = cnn MsgBox cata.tables.Count cnn.Close Set cata = Nothing Set cnn = Nothing End Sub
JB http://boisgontierjacques.free.fr/
On 24 oct, 17:51, "ptck" wrote:
Bonjour J'ai cette macro qui lit 3 onglets dans les classeurs fermés mais comment mettre dans la variable Z le nombre exact d'onglets de chaque classeur pour ne pas avoir d'erreurs dans la récap
merci ptcck
Public Sub xx() cellule = "A4,A9,A13, B5,C6,D8" lign = 1 col = 0 Dossier = "C:Chemin" fichier = Dir(Dossier & "*.xls") Do While fichier <> "" For Z = 1 To 3 lign = lign + 1 For i = 0 To UBound(Split(cellule, ",")) col = col + 1 valeur = ExecuteExcel4Macro("'" & Dossier & "[" & fichier & "]Feuil" & Z & "'!" & _ Range(Split(cellule, ",")(i)).Address(ReferenceStyle:=xlR1C1)) Range(Cells(lign, col), Cells(lign, col)) = valeur Next col = 0 Next fichier = Dir Loop End Sub
michdenis
Comme c'est un tableau de base 0, il faut ajouter 1 à cette ligne de code :
'Pour obtenir le nombre de feuille du classeur fermé : Msgbox Ubound(ListName) + 1
Comme c'est un tableau de base 0, il faut ajouter 1 à cette ligne de code :
'Pour obtenir le nombre de feuille du classeur fermé :
Msgbox Ubound(ListName) + 1