regrouper des valeurs depuis plusieurs feuilles

J

jph

Guest
bonjour à tous

après une lecture assidue de la macro excel de Michel sur le site, je me permets de vous poser une question complémentaire à savoir :
je veux faire la même chose, donc la macro me va bien sauf que j'ai par exemple :
une donnée sur chaque feuille en c4 que je veux récupérer en colonne B1, puis B2....etc
une autre donnée en B3 que je veux récupérer en colonne C1, puis C2.... etc

étant nul en macro excel, merci de vos éclaircissements ...
merci d'avance !



la macro de base de Michel, qui ne récupère que cellule A1 :

Sub chercheFichiersFermesV03()
Dim X As Integer, nbFichiers As Integer, Y As Integer
Dim Tableau() As String
Dim Direction As String

Application.ScreenUpdating = False
Direction = Dir("C:\Documents and Settings\michel\dossier\general\excel\*.xls") 'adapter chemin repertoire

Do While Len(Direction) > 0
nbFichiers = nbFichiers + 1
ReDim Preserve Tableau(1 To nbFichiers)
Tableau(nbFichiers) = Direction
Direction = Dir()
Loop

If nbFichiers > 0 Then
For X = 1 To nbFichiers
If Tableau(X) <> ThisWorkbook.Name Then
Y = Y + 1
With ActiveSheet.Cells(Y, 1)
.Formula = "='C:\Documents and Settings\michel\dossier\general\excel\[" & Tableau(X) & "]Feuil1" & "'!" & "A1"
.Value = .Value
End With
End If
Next X
End If

Application.ScreenUpdating = True
End Sub
 
M

michel

Guest
bonjour Jph

j'espere que cette adaptation pourra t'aider ( j'ai supposé que toutes les données récupérées dans plusieurs classeurs s'affichaient à la suite dans les colonne B et C )
dans cet exemple les onglets de classuers fermés doivent imperativement etre nommés Feuil1 , Feuil2 et Feuil3


Sub chercheFichiersFermesV04()
Dim X As Integer, nbFichiers As Integer, Y As Integer
Dim j As Byte
Dim Tableau() As String
Dim Direction As String

Application.ScreenUpdating = False
Direction = Dir("C:\Documents and Settings\michel\dossier\*.xls") 'adapter chemin repertoire

Do While Len(Direction) > 0
nbFichiers = nbFichiers + 1
ReDim Preserve Tableau(1 To nbFichiers)
Tableau(nbFichiers) = Direction
Direction = Dir()
Loop

If nbFichiers > 0 Then

For X = 1 To nbFichiers

For j = 1 To 3 'les noms de feuilles doivent imperativement etre du stye Feuil1,Feuil2...)
If Tableau(X) <> ThisWorkbook.Name Then
Y = Y + 1

With ActiveSheet.Cells(Y, 2)
.Formula = "='C:\Documents and Settings\michel\dossier\[" & Tableau(X) & "]Feuil" & j & "'!" & "C4"
.Value = .Value
End With

With ActiveSheet.Cells(Y, 3)
.Formula = "='C:\Documents and Settings\michel\dossier\[" & Tableau(X) & "]Feuil" & j & "'!" & "B3"
.Value = .Value
End With


End If
Next j

Next X

End If

Application.ScreenUpdating = True
End Sub


bon apres midi
MichelXld
 
J

jph

Guest
Bonjour Michel

avant d'essayer cette macro dont je te remercie... pourquoi faut-il que chaque feuille est un N° different ?
la boucle qui incrémente de fichier ne permet-elle pas de distinguer la feuille1 du fichier 100.xls de celle (N°1 aussi) du fichier 101.xls ....?
merci de ta réponse!
jean philippe
 
M

michel

Guest
rebonjour jean philippe

quand j'ai lu ...une donnée sur chaque feuille en c4... dans ton premier message , j'ai interpreté ( sans doute à tort ) que tu souhaitais récupérer des informations dans plusieurs onglets d'un meme classeur ...


bonne soiree
MichelXld
 
J

jph

Guest
rebonjour Michel,

alors là je ne comprend plus...ca ne me donne plus les données en cellule A??? par contre je récupère les infos des autres cellules b3 et c4 pour l'exemple... toutes les 3 lignes ???
j'ai inséré dans ta dernière macro :

With ActiveSheet.Cells(Y, 1)
.Formula = "='C:\Documents and Settings\michel\dossier\general\excel\[" & Tableau(X) & "]Feuil1" & "'!" & "A1"
.Value = .Value
End With

au départ j'ai plusieurs feuilles N° 1 qui ont chacune une info dans A1, puis B3 et c4 par exemple. mais je veux que la synthese "mette" les infos des c4 en colonne B et celles des B3 en colonne C..
je dois oublier quelquechose... mais quoi ?
cela t'inspire ??
 
J

jph

Guest
rebonsoir Michel,


après quelques tatonnements.... j'ai enfin réussi à obtenir le résulat souhaité !
j'ai supprimé la boucle j : for 1 to 3 relatif au feuille, et j'ai supprimé la réf au N) de feuille.... et c'est bon !
en tout cas merci beaucoup de ton aide.

JP
 

Discussions similaires

Réponses
19
Affichages
2 K
Réponses
4
Affichages
364

Statistiques des forums

Discussions
314 017
Messages
2 104 583
Membres
109 084
dernier inscrit
mizab