Macro consolidation d'onglets

thenthelo

XLDnaute Junior
Bonjour,

Je reviens sur ce forum pour avoir de l'aide sur ma macro de consolidation d'onglets.
J'ai donc dans mon fichier des onglets de détails que je souhaite consolider dans un onglet de synthèse (appelé "BASE") l'objectif final étant d'avoir une belle base de données pour faire des tableaux croisés dynamiques. Je précise que toutes les colonnes de mes onglets de détails sont identiques d'un onglet à l'autre.
Voici la macro (simplifiée car beaucoup plus de feuilles de détails) :

Sheets("BASE").[A1].CurrentRegion.Offset(1, 0).Clear
For Each s In Array("feuille1", "feuille2")
Sheets(s).[A1].CurrentRegion.Offset(1, 0).Copy _
Sheets("BASE").[A65000].End(xlUp).Offset(1, 0)

Problèmes :
- la macro ne me copie mes onglets de détails qu'à partir de leur ligne n° 2 !Pourquoi pas dès la n°1 ??? J'ai contourné le problème en laissant la ligne n°1 à blanc mais bon .... ! Une idée ?
- mes onglets de détails sont peins de calculs, pour simplifier finalement je préférerai que ma macro fasse un copier coller valeur, je pense aussi que ça allégera le fichier. Comment faire ?
- si j'arrive à faire un copier valeur alors je 'aurai plus besoin des 3 premières lignes de mes onglets de détail. Du coup ma macro ne pourrait prendre mes onglets de détail qu'à partir de la ligne n°4. Comment faire ?

Merci d'avance pour votre aide? Attention je n'y connais quasi rien en macro !
 

thenthelo

XLDnaute Junior
Re : Macro consolidation d'onglets

Alors effectivement avec cette modif il me prend bien la ligne 1.
Et j'ai modifié aussi dans
Sheets("BASE").[A65000].End(xlUp).Offset(0, 0), comme ca tout est Ok.

Reste mon problème de copier-coller valeur :D
 
Dernière édition:

thenthelo

XLDnaute Junior
Re : Macro consolidation d'onglets

Bonjour,
créer une macro (enregistrement de toutes les actions que tu fais) tu arrête la macro et tu la retrouve dans module de vba
ainsi tu pourras avancer
A+

J'ai bien essayé et je comprends que je dois mettre en plus quelque chose comme
Code:
PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

mais je n'arrive pas à l'ajouter à ce que j'ai déja. J'ai toujours des erreurs de syntaxe. Je n'y connais rien en macro.
Ma macro actuelle :
Code:
'lancer la macro de compilation
Sheets("BASE").[A1].CurrentRegion.Offset(1, 0).Clear
For Each s In Array("feuille1", "feuille2")
Sheets(s).[A1].CurrentRegion.Offset(1, 0).Copy _
Sheets("BASE").[A65000].End(xlUp).Offset(1, 0)
     Next s
End Sub
 

thenthelo

XLDnaute Junior
Re : Macro consolidation d'onglets

En pièce jointe un exemple de fichier.
2 onglets de détail "RF" et "RN" que je souhaite compiler en un seul sur "BASE".
Ma formule de macro fonctionne mais en fait je ne voudrais que copier les valeurs de "RF" et "RN" et non les formules de façon à obtenir des valeurs en col F sur "BASE" et non des formules. Cela me permettra d'alléger le fichier et le temps d'exécution de la macro et surtout cela me permettra d'utiliser des références figées ($B$2 par ex) dans mes onglets de détail ce qui n'est pas possible dans le cas de figure actuel.

Merci d'avance
 

Pièces jointes

  • compil2.xls
    19.5 KB · Affichages: 110

fhoest

XLDnaute Accro
Re : Macro consolidation d'onglets

Bonsoir,
voici le code
Code:
Sheets("BASE").[A1].CurrentRegion.Offset(0, 0).Clear
  For Each s In Array("RF", "RN")
      Sheets(s).[A1].CurrentRegion.Offset(0, 0).Copy
     Sheets("BASE").[A65000].End(xlUp).CurrentRegion.Offset(x, 0).PasteSpecial , Paste:=xlPasteValues
   x = Sheets("BASE").[A65000].End(xlUp).Row
    Next s
A bientot.
 

Staple1600

XLDnaute Barbatruc
Re : Macro consolidation d'onglets

Bonsoir à tous

EDITION: en passant par un tableau (avantage évite le copier/coller)
Code:
Sub compil_array()
Dim w As Worksheet, t
With Sheets("BASE")
    .Cells.Clear
For Each w In Worksheets
    If w.Name <> "BASE" Then
    t = w.[A1].CurrentRegion
    .[A65000].End(xlUp)(2).Resize(UBound(t, 1), UBound(t, 2)) = t
    Erase t
End If
Next w
.Rows(1).Delete
End With
End Sub

Une autre possibilité d'écriture (avec utilisation du copier/coller)
Code:
Sub compil_bis()
Dim w As Worksheet
With Sheets("BASE")
    .Cells.Clear
For Each w In Worksheets
    If w.Name <> "BASE" Then
    w.[A1].CurrentRegion.Copy .[A65000].End(xlUp)(2)
End If
Next w
.Rows(1).Delete
End With
End Sub

fhoest
Avec ton code tel quel, il te manque une ligne
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Macro consolidation d'onglets

Bonjour fhoest, le fil, le forum

Il manque une ligne dans la recopie : la ligne 8
car elle écraser par la copie du second onglet
cf copie d'écran
difcod.gif
 
Dernière édition:

Discussions similaires

Réponses
12
Affichages
217

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 867
dernier inscrit
XFPRO