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

Récupérer des tableaux de valeurs de plusieurs onglets sur une même feuille

4 réponses
Avatar
petitanouk
Bonjour,

J'ai un petit souci sur Excel. Voici le problème.

J'ai un fichier Excel qui contient 100 onglets structurés de la même façon. Chaque onglet contient 96 valeurs organisées en tableau (12 colonnes x 8 lignes : de la colonne B à M et de la ligne 7 à 14).
Je souhaiterai "copier-coller" les 96 valeurs de chaque onglet sur une même feuille en mettant chaque tableau de 96 valeurs les uns en-dessous des autres.

Après, j'aurai à faire des calculs de moyenne, écart-type,...

Une possibilité serait de le faire manuellement mais c'est très fastidieux (environ 2h à faire du copier-coller).

Je me tourne vers vous pour savoir si l'on peut entrer une Macro ou un code VBA pour automatiser cette manœuvre, sachant que je suis complètement novice en programmation.

Si je ne suis pas clair, n'hésitez pas à me le dire.

Je vous remercie de votre aide.

4 réponses

Avatar
DanielCo
Bonjour,
Essaie :

Sub test1()
Dim sh As Worksheet, Ctr As Integer
Dim inCalculationMode As Integer
Application.ScreenUpdating = False
inCalculationMode = Application.Calculation
Application.Calculation = xlCalculationManual
Sheets.Add
ActiveSheet.Name = "Récap"
Ctr = 1
For Each sh In Worksheets
If sh.Name <> "Récap" Then
sh.[B7:M14].Copy Cells(Ctr, 1)
Ctr = Ctr + 8
End If
Next sh
Application.Calculation = inCalculationMode
Application.ScreenUpdating = True
End Sub

Cordialement.
Daniel


Bonjour,

J'ai un petit souci sur Excel. Voici le problème.

J'ai un fichier Excel qui contient 100 onglets structurés de la même façon.
Chaque onglet contient 96 valeurs organisées en tableau (12 colonnes x 8
lignes
de la colonne B à M et de la ligne 7 à 14).


Je souhaiterai "copier-coller" les 96 valeurs de chaque onglet sur une même
feuille en mettant chaque tableau de 96 valeurs les uns en-dessous des
autres.

Après, j'aurai à faire des calculs de moyenne, écart-type,...

Une possibilité serait de le faire manuellement mais c'est très fastidieux
(environ 2h à faire du copier-coller).

Je me tourne vers vous pour savoir si l'on peut entrer une Macro ou un code
VBA pour automatiser cette man½uvre, sachant que je suis complètement novice
en programmation.

Si je ne suis pas clair, n'hésitez pas à me le dire.

Je vous remercie de votre aide.
Avatar
isabelle
bonjour petitanouk,

est ce que ce fichier comporte uniquement les 100 onglets en questions ?

isabelle


Le 2011-03-16 06:29, petitanouk a écrit :
Bonjour,

J'ai un petit souci sur Excel. Voici le problème.

J'ai un fichier Excel qui contient 100 onglets structurés de la même façon.
Chaque onglet contient 96 valeurs organisées en tableau (12 colonnes x 8 lignes
: de la colonne B à M et de la ligne 7 à 14).
Je souhaiterai "copier-coller" les 96 valeurs de chaque onglet sur une même
feuille en mettant chaque tableau de 96 valeurs les uns en-dessous des autres.

Après, j'aurai à faire des calculs de moyenne, écart-type,...

Une possibilité serait de le faire manuellement mais c'est très fastidieux
(environ 2h à faire du copier-coller).

Je me tourne vers vous pour savoir si l'on peut entrer une Macro ou un code VBA
pour automatiser cette manœuvre, sachant que je suis complètement novice en
programmation.

Si je ne suis pas clair, n'hésitez pas à me le dire.

Je vous remercie de votre aide.

Avatar
petitanouk
DanielCo a écrit le 16/03/2011 à 12h02 :
Bonjour,
Essaie :

Sub test1()
Dim sh As Worksheet, Ctr As Integer
Dim inCalculationMode As Integer
Application.ScreenUpdating = False
inCalculationMode = Application.Calculation
Application.Calculation = xlCalculationManual
Sheets.Add
ActiveSheet.Name = "Récap"
Ctr = 1
For Each sh In Worksheets
If sh.Name <> "Récap" Then
sh.[B7:M14].Copy Cells(Ctr, 1)
Ctr = Ctr + 8
End If
Next sh
Application.Calculation = inCalculationMode
Application.ScreenUpdating = True
End Sub

Cordialement.
Daniel


Bonjour,

J'ai un petit souci sur Excel. Voici le problème.

J'ai un fichier Excel qui contient 100 onglets structurés de la
même façon.
Chaque onglet contient 96 valeurs organisées en tableau (12 colonnes x
8
lignes
de la colonne B à M et de la ligne 7 à 14).



Je souhaiterai "copier-coller" les 96 valeurs de chaque onglet sur
une même
feuille en mettant chaque tableau de 96 valeurs les uns en-dessous des
autres.

Après, j'aurai à faire des calculs de moyenne,
écart-type,...

Une possibilité serait de le faire manuellement mais c'est très
fastidieux
(environ 2h à faire du copier-coller).

Je me tourne vers vous pour savoir si l'on peut entrer une Macro ou un code
VBA pour automatiser cette man½uvre, sachant que je suis
complètement novice
en programmation.

Si je ne suis pas clair, n'hésitez pas à me le dire.

Je vous remercie de votre aide.




Bonjour DanielCo,

J'ai essayé la Macro sur un des fichiers et cela marche sans problème. C'est magnifique !!!

Par contre, serait-il possible de détailler, si tu as le temps bien-sûr, les différents lignes de la macro afin de comprendre ?
C'est de la curiosité personnelle et cela peut me servir au cas où j'aurai à changer la macro.

Encore merci infiniment pour l'aide apportée.

Bien cordialement,

tan
Avatar
Jacquouille
Bonsoir

Bien que jamais marié au grand breton, je m'en vais tenter d'expliquer (dans
le texte)

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."

Bonjour,
Essaie :

Sub test1()
Dim sh As Worksheet, Ctr As Integer
Dim inCalculationMode As Integer 'sont des déclarations de variables
Application.ScreenUpdating = False
inCalculationMode = Application.Calculation
Application.Calculation = xlCalculationManual ' il met le calcul sur
"manuel" pour pas fatiguer la bête

Sheets.Add 'Insérer une feuille
ActiveSheet.Name = "Récap" '...et la baptiser "Récap"
Ctr = 1 'Donne la valeur 1 à la var CTR. Si tu veux recopier à partir de
la ligne 2 , tu donnes 2 à CTR
For Each sh In Worksheets ' Pour chaque feuille dans fichier
If sh.Name <> "Récap" Then ' si le nom de la feuille est différent de
"Récap"
sh.[B7:M14].Copy Cells(Ctr, 1) 'copie la plage B7:M14 de la feuille
analysée à la cellule(CTR,1)de la feuille "Récap"--> cells(1,1) au premier
coup
Ctr = Ctr + 8 'quand c'est fait, ajoute 8 à la var CTR de manière à
copier la plage sivante sous la précédente
End If 'fin des conditions
Next sh ' feuille suivante
Application.Calculation = inCalculationMode
Application.ScreenUpdating = True 'remet tout en l'état (calcul auto ....
End Sub ' fin des haricots.

Cordialement.
Daniel