Consolidation de plusieurs onglets

BOnjour à tous,

Excel 2010 et sa fonction consolidation ne prend en compte que les chiffres et non le texte je cherche donc une macro qui va bien qui ira copier mes 3 onglets pour me les coller dans l'onglet BDD.

Je n'ai pas trouvé ma réponse dans le forum.

Merci beaucoup de votre aide !

Bien à vous.

une petite aide svp ?


J'ai essayé de faire une macro mais cela ne fonctionne pas, pouvez-vous m'expliquer ?

Merci

Sub Macro2()

'

' Macro2 Macro

'

'

Sheets("BDD").Select

Range("d4").Select

Sheets("JLB" And "YF" And "MEB").Select

Rows("3:3").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

Sheets("BDD").Select

ActiveSheet.Paste

Rows("3:3").Select

Range(Selection, Selection.End(xlDown)).Select

Application.CutCopyMode = False

Selection.Copy

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Range("D4").Select

End Sub

Bonjour,

un gros nettoyage (n'utilise pas de select, ça prend de la ressource pour rien) et décompo de ta macro (et pense à utiliser les balises de code pour mettre en forme ton code) :

Sub Copie3Feuilles()
'

Dim x As Long, y As Long

Sheets("BDD").ClearContents

x = Worksheets("JLB").Range("A" & Rows.Count).End(xlUp).Row
Sheets("JLB").Rows("3:" & x).Copy Sheets("BDD").Range("A1")

x = Worksheets("YF").Range("A1").End(xlDown).Row
y = Sheets("BDD").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("YF").Rows("3:" & x).Copy Sheets("BDD").Range("A" & y)

x = Worksheets("MEB").Range("A1").End(xlDown).Row
y = Sheets("BDD").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("MEB").Rows("3:" & x).Copy Sheets("BDD").Range("A" & y)
End Sub

Merci beaucoup Reuk de ton aide !

La macro bloque sur

Sheets("BDD").ClearContents

et je ne sais pas pourquoi, tu as une explication ?

Oui désolé, dans la précipitation j'ai pas vérifié mon code :

Sheets("BDD").Cells.ClearContents

devrait marcher!

cool ça marche ! merci beaucoup beaucoup

Par contre j'ai décalé le copier coller du premier onglet de A1 vers A4 afin de laisser les titres apparaître mais cela ne fonctionne pas.

Peux tu m'aider la dessus ?

Sub test_conso()

'

Dim x As Long, y As Long

Sheets("BDD").Cells.ClearContents

x = Worksheets("JLB").Range("A" & Rows.Count).End(xlUp).Row

Sheets("JLB").Rows("3:" & x).Copy Sheets("BDD").Range("A4")

x = Worksheets("YF").Range("A1").End(xlDown).Row

y = Sheets("BDD").Range("A" & Rows.Count).End(xlUp).Row + 1

Sheets("YF").Rows("3:" & x).Copy Sheets("BDD").Range("A" & y)

x = Worksheets("MEB").Range("A1").End(xlDown).Row

y = Sheets("BDD").Range("A" & Rows.Count).End(xlUp).Row + 1

Sheets("MEB").Rows("3:" & x).Copy Sheets("BDD").Range("A" & y)

End Sub

Utilise les balises de code (tu les trouveras au dessus de la zone dans laquelle tu tapes tes messages, c'est les boutons verts, sur le côté gauche), pour le mettre en forme comme ceci :

Sub test_conso()
'

Dim x As Long, y As Long

Sheets("BDD").Cells.ClearContents

x = Worksheets("JLB").Range("A" & Rows.Count).End(xlUp).Row
Sheets("JLB").Rows("3:" & x).Copy Sheets("BDD").Range("A4")

x = Worksheets("YF").Range("A1").End(xlDown).Row
y = Sheets("BDD").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("YF").Rows("3:" & x).Copy Sheets("BDD").Range("A" & y)

x = Worksheets("MEB").Range("A1").End(xlDown).Row
y = Sheets("BDD").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("MEB").Rows("3:" & x).Copy Sheets("BDD").Range("A" & y)
End Sub

Et qu'est ce qui ne marche pas exactement? Le code bloque ou il fait mal les copies?

Si le code te donne une erreur dit moi sur quel ligne, ça m'aidera à voir d'où peut venir le problème et j'espère trouver une solution!

Reuk,

Avant de lancer la macro, le nom de mes colonnes apparaît en ligne 2 et 3

j'ai demandé le copiage des onglets à partir de A4.

Et lorsque je lance la macro, elle efface le nom des colonnes.

En pj le résultat obtenu pr mieux comprendre


ok c'est bon ! j'ai réussi !!

yalaaaaa

Merci beaucoup


par contre j'ai une autre question si tu peux !

Une fois onglet "BDD" mise à jour j'aimerai qu'elle me fasse un tri croissant par date d'émission de facture.

tu sais comment je peux l'obtenir ?

Merci beaucoup

https://forum.excel-pratique.com/post176838.html#p176838

Tu trouveras le code que j'utilise (à adapter pour toi) et sinon, je te conseille l'enregistreur de macro pour découvrir des commandes que tu connais pas!

Pense à valider le sujet si la solution est trouvée!

J'avais essayé l'enregistreur de macro mais après dans la simplification de l'enregistreur c'est la ou je me perds et ou je foire tout, mais j'apprends déjà ...

J'ai adapté ta macro à mon petit fichier, mais ça coince sur le nom du fichier, je ne comprends pas...

Merci de jeter un petit coup d'oeil pr "réparer"

Merci bcp Reuk :!

Je bouge là mais je fais ça ce soir!

Pas de soucis, faut bien apprendre!

ok merci beaucoup !

bon courage

Voilà mon grand :

Sub test_conso()
'

Dim x As Long, y As Long

Sheets("BDD").Cells.ClearContents

x = Worksheets("JLB").Range("A" & Rows.Count).End(xlUp).Row
Sheets("JLB").Rows("1:" & x).Copy Sheets("BDD").Range("A2")

x = Worksheets("YF").Range("A1").End(xlDown).Row
y = Sheets("BDD").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("YF").Rows("3:" & x).Copy Sheets("BDD").Range("A" & y)

x = Worksheets("MEB").Range("A1").End(xlDown).Row
y = Sheets("BDD").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("MEB").Rows("3:" & x).Copy Sheets("BDD").Range("A" & y)

Dim RangDate As String, RangEcheance As String, RangTotal As String

'modif à faire : Nom de feuille (pour toi BDD)
x = Worksheets("BDD").Range("A2").End(xlDown).Row
'modif à faire : 3 et AI
RangTotal = "A3" & ":" & "AI" & x
'parce qu'il y a des données jusquà AI et
'que tu tries qu'à partir de la ligne 4 (mais que tu as des entêtes donc 3!)

'on nettoie les filtres
   ActiveWorkbook.Worksheets("BDD").Sort.SortFields.Clear

'là tu choisis les colonnes grace auxquelles tu veux trier
'tu n'as qu'à modifier ici
    RangDate = "C1" & ":" & "C" & x
    RangEcheance = "D1" & ":" & "D" & x

'on entre les filtres par importance decroissante
'tu enlèves si y en a trop!
    ActiveWorkbook.Worksheets("BDD").Sort.SortFields.Add Key:=Range(RangDate), SortOn:=xlSortOnValues, _
    Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("BDD").Sort.SortFields.Add Key:=Range(RangEcheance), SortOn:=xlSortOnValues, _
    Order:=xlAscending, DataOption:=xlSortNormal

'et là tu appliques le tri
   With ActiveWorkbook.Worksheets("BDD").Sort
        .SetRange Range(RangTotal)
        .Header = xlYes 'xlNo si tu n'as pas d'entête
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub

Alors, si dans le sujet dont je t'ai passé le lien il y a plusieurs blocs de code, ce n'était pas pour rien!

Tu avais juste mis le dernier qui applique les filtres mais comme tu n'en avais pas défini... ça marchait pas et pi t'avais pas non plus défini RangTotal ou d'autres choses du genre!

Dans celle là, tu trouveras un classement par date d'émission puis par date d'échéance!

Pense à clôturer le sujet si j'ai répondu à ta question!

Et j'ai regardé les autres modules de ton fichier, tu as 3 fois une macro très semblable, donc plusieurs possibilités :

  • tu fais une fonction ou macro qui fait appel à un paramètre (ta feuille) et tu as 3 petites macros (ou même une seule (avec la solution suivante) qui font appel à cette fonction)
  • tu met tout en une seule en utilisant ActiveSheet puisque tu lances la macro depuis un bouton sur la feuille que tu veux remplir

Pour la 2eme solution (plus simple et plus logique), ça donnerait ça :

ehhh en fait je viens de voir que tu avais déjà fait ça!

Donc très bien! Et clean tes modules inutiles au fur et à mesure parce que ça peut vite devenir le bazar quand tu as un gros programme et que tu le fais pas régulièrement (je devrais le faire sur mon progz de l'an dernier mais j'ai la flemme pkc j'ai 8 modules de minimum 3 "pages" et jusqu'à environ 18 "pages" je pense...)

c'est exactement ça !!!

merci beaucoup pour tous tes conseils ! je vais essayer de cleaner tous mes modules afin de les garder opérationnels...

Bon courage pour tes 18 pages...

Bonne journée

Rechercher des sujets similaires à "consolidation onglets"