Copier / Coller données de plusieurs feuilles sur une feuille
Résolu
ti_mouton
Messages postés
153
Statut
Membre
-
Frenchie83 Messages postés 2254 Statut Membre -
Frenchie83 Messages postés 2254 Statut Membre -
Bonjour,
Dans un classeur j'ai 3 feuilles qui contiennent chacune un TCD (qui s'étend de la colonne B à la colonne T). Mes feuilles se nomment AnalyseX, AnalyseY, AnalyseZ.
Je voudrais pouvoir copier/coller les 3 TCD les uns à la suite des autres sur une quatrième feuille : Détail.
J'ai repris un code que l'on m'avait donné sur ce forum pour copier/coller des données contenu dans plusieurs classeurs, et j'essaye de l'adapter à mon nouveau besoin.
Cependant, je ne suis pas très douée en VBA, du coup je n'arrive pas à adapter le code pour qu'il puisse copier la deuxième feuille une fois qu'il a fini de copier la première et ainsi de suite.
Voici ce que j'ai pu faire :
Et voici le code que l'on m'a donné qui permet de faire un copier/coller de plusieurs classeurs:
Si quelqu'un peu m'aider à l'adapter .. Merci beaucoup
Dans un classeur j'ai 3 feuilles qui contiennent chacune un TCD (qui s'étend de la colonne B à la colonne T). Mes feuilles se nomment AnalyseX, AnalyseY, AnalyseZ.
Je voudrais pouvoir copier/coller les 3 TCD les uns à la suite des autres sur une quatrième feuille : Détail.
J'ai repris un code que l'on m'avait donné sur ce forum pour copier/coller des données contenu dans plusieurs classeurs, et j'essaye de l'adapter à mon nouveau besoin.
Cependant, je ne suis pas très douée en VBA, du coup je n'arrive pas à adapter le code pour qu'il puisse copier la deuxième feuille une fois qu'il a fini de copier la première et ainsi de suite.
Voici ce que j'ai pu faire :
Option Explicit
Sub Compiler_BaT()
Dim DL As Integer, LigVid As Long, Tampon
Dim Plage As Range
Application.ScreenUpdating = False
With Sheets("Détail")
Set Plage = Range(.Cells(3, 2), .Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 20))
Plage.ClearContents
End With
With Sheets("AnalyseX")
DL = .Columns("B:T").Find(what:="*", searchdirection:=xlPrevious).Row
Tampon = .Range("B6:J" & DL)
End With
With Sheets("Detail")
LigVid = .Columns("B:T").Find(what:="*", searchdirection:=xlPrevious).Row + 1
Cells(LigVid, "B").Resize(UBound(Tampon), 19) = Tampon
End With
End Sub
Et voici le code que l'on m'a donné qui permet de faire un copier/coller de plusieurs classeurs:
Option Explicit
'------
Sub compiler_BaN()
Dim Chemin As String, Fich As String
Dim Derlig As Integer, Ligvid As Long, Tampon
'fige le défilement de l'écran
Application.ScreenUpdating = False
ThisWorkbook.Sheets("Synthèse Globale").Range("B2:N10000").ClearContents
Chemin = ThisWorkbook.Path
'se déplace dans le dossier de travail
Fich = Dir(Chemin & "\classeur" & "*.xlsm")
While Fich <> ""
'ouverture d'un classeurX.xlsm
Workbooks.Open Filename:=Chemin & "\" & Fich 'ouvre le classeur
With Sheets("saisie")
Derlig = .Columns("B:N").Find(what:="*", searchdirection:=xlPrevious).Row
Tampon = .Range("B2:N" & Derlig) 'mémorise les données à compiler dans Base de données
End With
Workbooks(Fich).Close
'restitution
With ThisWorkbook.Sheets("Synthèse Globale")
Ligvid = .Columns("B:N").Find(what:="*", searchdirection:=xlPrevious).Row + 1
Cells(Ligvid, "B").Resize(UBound(Tampon), 13) = Tampon
End With
'affecte le fichier suivant (utilisation du joker " * " )
Fich = Dir
Wend
Sheets("Synthèse Globale").Activate
MsgBox "compilation terminée"
End Sub
Si quelqu'un peu m'aider à l'adapter .. Merci beaucoup
A voir également:
- Copier / Coller données de plusieurs feuilles sur une feuille
- Fuite données maif - Guide
- Comment faire un livret avec des feuilles a4 - Guide
- Historique copier coller - Guide
- Bruler feuille de laurier - Guide
- Feuille de pointage excel - Télécharger - Tableur
3 réponses
Bonjour
Essayez ceci
Attention au nom donné à la feuille "Détail" (avec ou sans accent, ici j'ai mis l'accent).
Bonne journée
Cdlt
Essayez ceci
Private LigVid As Long
Private DL As Integer
Private Tampon
Sub Compiler_BaT()
Application.ScreenUpdating = False
On Error Resume Next
With Sheets("Détail")
Cells.ClearContents
End With
With Sheets("AnalyseX")
DL = .Columns("B:T").Find(what:="*", searchdirection:=xlPrevious).Row
Tampon = .Range("B6:J" & DL)
End With
Recopie
With Sheets("AnalyseY")
DL = .Columns("B:T").Find(what:="*", searchdirection:=xlPrevious).Row
Tampon = .Range("B6:J" & DL)
End With
Recopie
With Sheets("AnalyseZ")
DL = .Columns("B:T").Find(what:="*", searchdirection:=xlPrevious).Row
Tampon = .Range("B6:J" & DL)
End With
Recopie
End Sub
Sub Recopie()
On Error Resume Next
With Sheets("Détail")
LigVid = .Columns("B:T").Find(what:="*", searchdirection:=xlPrevious).Row + 1
If LigVid = 0 Then LigVid = 1
Cells(LigVid, "B").Resize(UBound(Tampon), 19) = Tampon
End With
End Sub
Attention au nom donné à la feuille "Détail" (avec ou sans accent, ici j'ai mis l'accent).
Bonne journée
Cdlt
Essayez
Cdlt
Private LigVid As Long
Private DL As Integer
Private Tampon
Private DossierClient
Private DossierProd
Sub Compiler_BaT()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
DossierProd = ThisWorkbook.Name
Chemin = ThisWorkbook.Path
'se déplace dans le dossier de travail
DossierClient = Dir(Chemin & "\" & "*.xlsm")
'ouverture d'un classeurX.xlsm
Workbooks.Open Filename:=Chemin & "\" & DossierClient 'ouvre le classeur
With Sheets("Base Produit")
Cells.ClearContents
End With
Windows(DossierProd).Activate
With Sheets("AnalyseX")
DL = [c1000000].End(xlUp).Row
Tampon = .Range("c6:T" & DL)
End With
Recopie
With Sheets("AnalyseY")
DL = [c1000000].End(xlUp).Row
Tampon = .Range("c6:T" & DL)
End With
Recopie
With Sheets("AnalyseZ")
DL = [c1000000].End(xlUp).Row
Tampon = .Range("c6:T" & DL)
End With
Recopie
Workbooks(DossierClient).Activate
End Sub
Sub Recopie()
On Error Resume Next
'restitution
Windows(DossierClient).Activate
With Windows(DossierClient).Sheets("Base Produit")
LigVid = [c1000000].End(xlUp).Row + 1
Cells(LigVid, 3).Resize(UBound(Tampon), 13) = Tampon
End With
Windows(DossierProd).Activate
End Sub
Cdlt
Petit rectificatif
Private LigVid As Long
Private DL As Integer
Private Tampon
Private DossierClient
Private DossierProd
Sub Compiler_BaT()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
DossierProd = ThisWorkbook.Name
Chemin = ThisWorkbook.Path
'se déplace dans le dossier de travail
DossierClient = Dir(Chemin & "\" & "*.xlsm")
'ouverture d'un classeurX.xlsm
Workbooks.Open Filename:=Chemin & "\" & DossierClient 'ouvre le classeur
With Sheets("Base Produit")
Cells.ClearContents
End With
Windows(DossierProd).Activate
With Sheets("AnalyseX")
DL = [B1000000].End(xlUp).Row
Tampon = .Range("B6:T" & DL)
End With
Recopie
With Sheets("AnalyseY")
DL = [B1000000].End(xlUp).Row
Tampon = .Range("B6:T" & DL)
End With
Recopie
With Sheets("AnalyseZ")
DL = [B1000000].End(xlUp).Row
Tampon = .Range("B6:T" & DL)
End With
Recopie
Workbooks(DossierClient).Activate
End Sub
Sub Recopie()
On Error Resume Next
'restitution
Windows(DossierClient).Activate
With Windows(DossierClient).Sheets("Base Produit")
LigVid = [B1000000].End(xlUp).Row + 1
Cells(LigVid, 3).Resize(UBound(Tampon), 13) = Tampon
End With
Windows(DossierProd).Activate
End Sub
Bonsoir
Je ma suis basé à ce que vous avez écrit dans le post 2, petit rappel:
J'aimerais copier ces trois TCD contenu dans les feuille AnalyseX, AnalyseY, AnalyseZ, du classeur Analyse Produit. Et les coller dans la feuille "<gras>Base Produit", du classeur "Analyse Client". </gras> A aucun moment vous parlez d'une feuille synthèse.
Si rien ne s'est coller, c'est que je ne pointe pas sur la première ligne des TCD, dans le cas présent je commence à la ligne B6 . Remplacez B6 par la première cellule en haut à gauche du TCD .
Cdlt
Je ma suis basé à ce que vous avez écrit dans le post 2, petit rappel:
J'aimerais copier ces trois TCD contenu dans les feuille AnalyseX, AnalyseY, AnalyseZ, du classeur Analyse Produit. Et les coller dans la feuille "<gras>Base Produit", du classeur "Analyse Client". </gras> A aucun moment vous parlez d'une feuille synthèse.
Si rien ne s'est coller, c'est que je ne pointe pas sur la première ligne des TCD, dans le cas présent je commence à la ligne B6 . Remplacez B6 par la première cellule en haut à gauche du TCD .
Cdlt
Merci pour ton code !
Petite question, mon besoin a encore un peu évolué ...
J'aimerais copier ces trois TCD contenu dans les feuille AnalyseX, AnalyseY, AnalyseZ, du classeur Analyse Produit. Et les coller dans la feuille "Base Produit", du classeur "Analyse Client". Les deux classeurs "Analyse Produit" et "Analyse Client" font parti du même fichier.
Comment pourrais je procéder ?
Merci pour ton aide