Consolider données feuilles d'un classeur dans une
Bonsoir à tous,
Je ne suis pas une experte VBA, et je sèche sur un sujet:
Je suis en train de construire une base de donnée, et j'aurais besoin de rapatrier les informations saisies dans 13 de mes onglets, en un onglet, sobrement intitulé consolidation. Le but est de devoir éviter de faire des collages à la mano, et potentiellement, des mauvaises manip. D'autant plus que ces données peuvent changer par la suite.
Je cherche à rapatrier les données des colonnes A à G de mes feuilles 1 à 13, qui ont un nombre de lignes variables (1ere ligne= titre des colonnes), les une à la suite des autres dans mon onglet consolidation, pour ne former qu'une seule base.
J'ai, sur mes feuilles, d'autres données sur les autres colonnes, qui elles ne devront pas être ramenées dans l'onglet conso.
Fichier allégé en PJ pour illustration.
J'ai tenté la macro ci-dessous (trouvée sur youtube), mais j'obtiens une erreur d'exécution 1004: la methode select de la classe worksheet a échoué. Pourtant, pas d'erreurs de caractères.
Pourriez-vous éclairer ma lanterne SVP? Ou me suggérer une autre méthode?
D'avance merci,
'procédure permettant la consolidation des données de plusieurs feuilles'
Dim i As Integer, j As Integer
Dim derniereLigne As Integer
Dim LastRowConsolidation As Integer
'procédure permettant d'effacer toutes les données de la feuille consolidation'
Sub EffaceDonnees()
Worksheets("Consolidation").Select
Range("A2:G1000000").Select
Selection.Clear
Range("A2").Select
End Sub
'Procédure permettant la consolidation des feuilles du classeur'
Sub Consolider()
Application.ScreenUpdating = False
EffaceDonnees
'Boucle permettant de lire toutes les feuilles à consolider'
For j = 1 To 13 'parcours les feuilles'
Sheets(j).Select
derniereLigne = Range("A1000000").End(xlUp).Row
For i = 2 To derniereLigne 'parcours des lignes de chaque table'
Sheets(j).Select
Rows(i).Select
Selection.Copy
Sheets("Consolidation").Select
LastRowConsolidation = Range("A1000000").End(xlUp).Row + 1
Cells(LastRowConsolidation, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Next i
Next j
Application.ScreenUpdating = True
MsgBox "La consolidation est terminée", vbOKOnly + vbbInformation, "Information"
End Sub
Bonjour et bienvenue sur le forum
Un essai à tester. Te convient-il ?
Bye !
Bonjour,
Merci de ton retour et ton message de bienvenue
Alors oui ça fonctionne, merci!
Par contre... je n'ai pas pensé à le préciser effectivement, dans mes onglets, mes valeurs en F sont souvent liées à d'autres cellules de la feuille, du coup il faudrait que ça me rapatrie la valeur en F, et non la formule permettant de l'obtenir, est ce possible?
Ca me ramène aussi le titre des colonnes en dernière ligne, ça au pire je peux l'enlever à la mano.
Et si je change les valeurs d'une des feuilles (c'est de la budgétisation, les données bougent encore
Ca me ramène aussi le titre des colonnes en dernière lign
Bonjour
il faudrait que ça me rapatrie la valeur en F, et non la formule permettant de l'obtenir
Voir la nouvelle version :
Ca me ramène aussi le titre des colonnes en dernière ligne
Voilà qui est curieux : je 'ai pas ça sur mon PC et je ne vois pas comment cela pourrait y être. Je ne sais donc pas le corriger.
la macro permet t'elle d'effacer les données précédemment rapatriées dans l'onglet Consolidation
Elle le fait à chaque fois qu'on la lance en cliquant sur le bouton bleu
Bye !
Bonjour,
Okk, c'est parfait ça déroule, merci!
Serait t'il possible d'avoir une petite explication sur les grandes lignes de la macro stp, histoire que je me forme au passage?
Bonjour
Serait t'il possible d'avoir une petite explication
J’ai fait une macro qui fait une boucle pour passer toutes les feuilles du classeur.
Elle teste ces feuilles et les retient si
- Leur nom est différent de celui de la feuille de départ
- Elles ont en cellule A1 la valeur : » "code imputation" »
Pour chacune de ces feuilles, elle copie les plages non vides les colonnes A à G, à partir de la ligne 2 et les reporte à la suite, sur la feuille ‘’Consolidation »
Tu peux voir la macro en tapant simultanément sur les touches Alt et F11
OK ?
Bye !
Bonjour,
Merci beaucoup, bonne fin de journée