Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

tableau

6 réponses
Avatar
ptck
bonsoir
pour plusieurs classeurs dans un répertoire je voudrai récupérer une
quinzaine de valeurs
dans des cellules ; par exemple le valeurs de A4, A9, A13, B5, C6 D8 etc...
au lieu d'ouvrir les classeurs un par un et copier les valeurs dans une
feuille
j'avais l'idée de les stocker dans un tableau temporaire et de copier ce
tableau dans la feuille
(chaque donnée d'un classeur dans une ligne différente)

en cherchant un peu j'ai fait la macro ci dessous qui ne marche pas
évidemment
merci de votre aide
ptck

Sub Macro1()

Dim a(1 To 6)
For Each c In Range("A4,A9,A11,A13,A18,A25")
For i = 1 To 6
a(i, 1) = c
Next i
End Sub

6 réponses

Avatar
Jac
... et si, sans macro, tu faisais un calcul multi-classeurs ?
Tu ouvres ton classeur de résultats et tu copies les valeurs d'un
classeur cible puis tu passes par collage spécial, collage avec liaison
dans le classeur de résultats. Eventuellement, tu déplaces tes formules
pour obtenir ce que tu veux. Eventuellement tu les dupliques et tu
remplaces le nom du classeur par le nom d'un autre classeur s'il ont
tous la même structure.
Conseil : dans chaque classeur tu fais écrire la date de la dernière
modif que tu ramènes dans ton classeur de résultats afin de voir si
certains classeurs n'ont pas été mis à jour, par exemple.

On en reparle quand tu veux.

Jac

ptck avait soumis l'idée :
bonsoir
pour plusieurs classeurs dans un répertoire je voudrai récupérer une
quinzaine de valeurs
dans des cellules ; par exemple le valeurs de A4, A9, A13, B5, C6 D8 etc...
au lieu d'ouvrir les classeurs un par un et copier les valeurs dans une
feuille
j'avais l'idée de les stocker dans un tableau temporaire et de copier ce
tableau dans la feuille
(chaque donnée d'un classeur dans une ligne différente)

en cherchant un peu j'ai fait la macro ci dessous qui ne marche pas
évidemment
merci de votre aide
ptck

Sub Macro1()

Dim a(1 To 6)
For Each c In Range("A4,A9,A11,A13,A18,A25")
For i = 1 To 6
a(i, 1) = c
Next i
End Sub


Avatar
FFO
Salut à toi
L'onglet de chaque classeur ayant le même nom je te propose ce code :

Cellule = "A4,A9,A13, B5,C6,D8"
For i = 0 To UBound(Split(Cellule, ","))
Dossier = "C:Chemin"
Fichier = Dir(Dossier & "*.xls")
Do While Fichier <> ""
VALEUR = ExecuteExcel4Macro("'" & Dossier & "[" & Fichier & "]Feuil1'!" &
Range(Split(Cellule, ",")(i)).Address(ReferenceStyle:=xlR1C1))
Range("A65535").End(xlUp).Offset(1, 0) = VALEUR
Fichier = Dir
Loop
Next

Résultat colonne A du classeur actif

Actualises :
Dossier = "C:Chemin"
du chemin du dossier de tes classeurs

Cellule = "A4,A9,A13, B5,C6,D8"
des cellules dont tu souhaites récupérer les valeurs

VALEUR = ExecuteExcel4Macro("'" & Dossier & "[" & Fichier & "]Feuil1'!"
du nom de l'onglet identique à chaque classeur (ici Feuil1)

Range("A65535").End(xlUp).Offset(1, 0) = VALEUR
de la colonne du classeur actif qui reçoit les données (ici colonne A)

Fais des essais et dis moi !!!!!
Avatar
AnB
Merci
mais la macro met dans la feuille récap
la valeur de la cellule A4 du classeur 1
puis en dessous la valeur de la cellule A4 du classeur 2
puis en dessous la valeur de la cellule A4 du classeur 3 etc

et passe à la cellule A9 et fait la même chose

il faudrait dans la feuille récap les cellules en ligne et une ligne par
classeur
entre temps j'essaie de comprendre
Merci


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

Salut à toi
L'onglet de chaque classeur ayant le même nom je te propose ce code :

Cellule = "A4,A9,A13, B5,C6,D8"
For i = 0 To UBound(Split(Cellule, ","))
Dossier = "C:Chemin"
Fichier = Dir(Dossier & "*.xls")
Do While Fichier <> ""
VALEUR = ExecuteExcel4Macro("'" & Dossier & "[" & Fichier & "]Feuil1'!" &
Range(Split(Cellule, ",")(i)).Address(ReferenceStyle:=xlR1C1))
Range("A65535").End(xlUp).Offset(1, 0) = VALEUR
Fichier = Dir
Loop
Next

Résultat colonne A du classeur actif

Actualises :
Dossier = "C:Chemin"
du chemin du dossier de tes classeurs

Cellule = "A4,A9,A13, B5,C6,D8"
des cellules dont tu souhaites récupérer les valeurs

VALEUR = ExecuteExcel4Macro("'" & Dossier & "[" & Fichier & "]Feuil1'!"
du nom de l'onglet identique à chaque classeur (ici Feuil1)

Range("A65535").End(xlUp).Offset(1, 0) = VALEUR
de la colonne du classeur actif qui reçoit les données (ici colonne A)

Fais des essais et dis moi !!!!!



Avatar
Ptck
rebonsoir

suite à vos conseil je suis arriver à ceci
peut être y a t il mieux à faire
merci encore
ptck


Public Sub xx()
Cellule = "A4,A9,A13, B5,C6,D8"
lign = 1
col = 0
Dossier = "C:Chemin"
Fichier = Dir(Dossier & "*.xls")
Do While Fichier <> ""
lign = lign + 1
For i = 0 To UBound(Split(Cellule, ","))
col = col + 1
valeur = ExecuteExcel4Macro("'" & Dossier & "[" & Fichier & "]Feuil1'!" & _
Range(Split(Cellule, ",")(i)).Address(ReferenceStyle:=xlR1C1))
Range(Cells(lign, col), Cells(lign, col)) = valeur
Next
col = 0
Fichier = Dir
Loop

End Sub
Avatar
FFO
Rebonjour à toi

Je reprends le cour de ce fil
Effectivement dans ma proposition je me suis simplement attaché à ramener
les données de chaque classeur sans chercher à les ordonner dans la feuille
de destination

Ton adaptation me semble correct compte tenu de la manière dont tu souhaites
récupérer tes données

Je ne vois pas d'amélioration éventuelle

Au plaisir
Avatar
Jac
... as-tu essayé sans macro ?

Jac a présenté l'énoncé suivant :
... et si, sans macro, tu faisais un calcul multi-classeurs ?
Tu ouvres ton classeur de résultats et tu copies les valeurs d'un classeur
cible puis tu passes par collage spécial, collage avec liaison dans le
classeur de résultats. Eventuellement, tu déplaces tes formules pour obtenir
ce que tu veux. Eventuellement tu les dupliques et tu remplaces le nom du
classeur par le nom d'un autre classeur s'il ont tous la même structure.
Conseil : dans chaque classeur tu fais écrire la date de la dernière modif
que tu ramènes dans ton classeur de résultats afin de voir si certains
classeurs n'ont pas été mis à jour, par exemple.

On en reparle quand tu veux.

Jac

ptck avait soumis l'idée :
bonsoir
pour plusieurs classeurs dans un répertoire je voudrai récupérer une
quinzaine de valeurs
dans des cellules ; par exemple le valeurs de A4, A9, A13, B5, C6 D8 etc...
au lieu d'ouvrir les classeurs un par un et copier les valeurs dans une
feuille
j'avais l'idée de les stocker dans un tableau temporaire et de copier ce
tableau dans la feuille
(chaque donnée d'un classeur dans une ligne différente)

en cherchant un peu j'ai fait la macro ci dessous qui ne marche pas
évidemment
merci de votre aide
ptck

Sub Macro1()

Dim a(1 To 6)
For Each c In Range("A4,A9,A11,A13,A18,A25")
For i = 1 To 6
a(i, 1) = c
Next i
End Sub