Macro excel - Réunir des données
fabnad
Messages postés
29
Statut
Membre
-
pilas31 Messages postés 1878 Statut Contributeur -
pilas31 Messages postés 1878 Statut Contributeur -
Bonjour,
Toujours débutant en Macro excel....
Maintenant je cherche à réunir plusieurs données sous un même fichier dans un même onglet.
Mon document de base est classeur2.xls J'ai deux onglets, un nommé "Mois" vierge de données, l'autre nommé "Année" avec les anciennes données des mois précédents.
Mes données sont dans le fichier Classeurtestextraction.xls (Ce document regroupe mes données du mois)
A partir de classeur2.xls je veux lancer une macro permettant:
D'aller copier les données dans Classeurtestextraction.xls
De les coller dans l'onglet "Mois" de classeur2.xls
Jusque là je sais faire
Puis de les coller dans l'onglet "Année" de classeur2.xls
Comme dit précédement dans cet onglet figure déjà des données (données des mois précédents).
Je veux faire identifier à la macro la première cellule libre dans la colonne A afin de coller mes nouvelles données juste en dessous de la dernière ancienne.....
En résumé j'ai dans cet onglet des données occupants les colonnes A à G jusqu'à la ligne n
Je souhaite coller mes nouvelles données en An+1
Merci de vos réponses.
Toujours débutant en Macro excel....
Maintenant je cherche à réunir plusieurs données sous un même fichier dans un même onglet.
Mon document de base est classeur2.xls J'ai deux onglets, un nommé "Mois" vierge de données, l'autre nommé "Année" avec les anciennes données des mois précédents.
Mes données sont dans le fichier Classeurtestextraction.xls (Ce document regroupe mes données du mois)
A partir de classeur2.xls je veux lancer une macro permettant:
D'aller copier les données dans Classeurtestextraction.xls
De les coller dans l'onglet "Mois" de classeur2.xls
Jusque là je sais faire
Puis de les coller dans l'onglet "Année" de classeur2.xls
Comme dit précédement dans cet onglet figure déjà des données (données des mois précédents).
Je veux faire identifier à la macro la première cellule libre dans la colonne A afin de coller mes nouvelles données juste en dessous de la dernière ancienne.....
En résumé j'ai dans cet onglet des données occupants les colonnes A à G jusqu'à la ligne n
Je souhaite coller mes nouvelles données en An+1
Merci de vos réponses.
A voir également:
- Macro excel - Réunir des données
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Trier des données excel - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
9 réponses
Bonjour,
La première ligne libre en VBA se trouve avec la formule suivante :
Sheets("Année").Range("A65536").End(xlUp).Row +1
A+
La première ligne libre en VBA se trouve avec la formule suivante :
Sheets("Année").Range("A65536").End(xlUp).Row +1
A+
Salut Pilas31,
merci de ton retour,
cependant j'ai bien précisé être débutant.....
et donc je ne sais pas comment intégrer la comande dans ma macro.
De plus je viens d'être basculé sur un nouveau PC qui utilise office 2007
Ci dessous ma macro:
Visiblement rien ne marche je t'explique ma démarche dans ma tentative de macro !!!
Je souhaite copier dans la feuil1 les données qui commence en A1 et qui finisse en C quelquechose d'où la commande
Dim Derlig As Long
Sheets("Feuil1").Select
Derlig = Range("A65536").End(xlUp).Row
Range(Cells(1, 1), Cells(Derlig, 3)).Copy
puis les coller dans le feuil3 avec en point de référence la première cellule libre en colonne A d'où les commande
Sheets("Feuil3").Range("A65536").End(xlUp).Row 1
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ensuite copier des données se trouvant dans Feuil2 qui commencent en A1 et qui finisse en C quelquechôse d'où la commande
Dim Derlig As Long
Sheets("Feuil2").Select
Derlig = Range("A65536").End(xlUp).Row
Range(Cells(1, 1), Cells(Derlig, 3)).Copy
et enfin coller ses données dans la première cellule libre en colonneA
Sheets("Feuil3").Range("A65536").End(xlUp).Row 1
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Voici le tout associé:
Sub Macro3()
'
' Macro3 Macro
'
'
Dim Derlig As Long
Sheets("Feuil1").Select
Derlig = Range("A65536").End(xlUp).Row
Range(Cells(1, 1), Cells(Derlig, 3)).Copy
Sheets("Feuil3").Select
Sheets("Feuil3").Range("A65536").End(xlUp).Row 1
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Dim Derlig As Long
Sheets("Feuil2").Select
Derlig = Range("A65536").End(xlUp).Row
Range(Cells(1, 1), Cells(Derlig, 3)).Copy
Sheets("Feuil3").Range("A65536").End(xlUp).Row 1
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End Sub
J'ai une erreur au niveau du second "Dim derlig As Long"...!!!
merci de ton retour,
cependant j'ai bien précisé être débutant.....
et donc je ne sais pas comment intégrer la comande dans ma macro.
De plus je viens d'être basculé sur un nouveau PC qui utilise office 2007
Ci dessous ma macro:
Visiblement rien ne marche je t'explique ma démarche dans ma tentative de macro !!!
Je souhaite copier dans la feuil1 les données qui commence en A1 et qui finisse en C quelquechose d'où la commande
Dim Derlig As Long
Sheets("Feuil1").Select
Derlig = Range("A65536").End(xlUp).Row
Range(Cells(1, 1), Cells(Derlig, 3)).Copy
puis les coller dans le feuil3 avec en point de référence la première cellule libre en colonne A d'où les commande
Sheets("Feuil3").Range("A65536").End(xlUp).Row 1
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ensuite copier des données se trouvant dans Feuil2 qui commencent en A1 et qui finisse en C quelquechôse d'où la commande
Dim Derlig As Long
Sheets("Feuil2").Select
Derlig = Range("A65536").End(xlUp).Row
Range(Cells(1, 1), Cells(Derlig, 3)).Copy
et enfin coller ses données dans la première cellule libre en colonneA
Sheets("Feuil3").Range("A65536").End(xlUp).Row 1
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Voici le tout associé:
Sub Macro3()
'
' Macro3 Macro
'
'
Dim Derlig As Long
Sheets("Feuil1").Select
Derlig = Range("A65536").End(xlUp).Row
Range(Cells(1, 1), Cells(Derlig, 3)).Copy
Sheets("Feuil3").Select
Sheets("Feuil3").Range("A65536").End(xlUp).Row 1
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Dim Derlig As Long
Sheets("Feuil2").Select
Derlig = Range("A65536").End(xlUp).Row
Range(Cells(1, 1), Cells(Derlig, 3)).Copy
Sheets("Feuil3").Range("A65536").End(xlUp).Row 1
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End Sub
J'ai une erreur au niveau du second "Dim derlig As Long"...!!!
Bon voila:
Ton code était presque correct, les 2 problèmes étaient :
1/ la double déclaration de Derlig
2/ avant le paste il faut selectionner la cellule
Cela doit fonctionner
A+
Sub Macro3()
'
' Macro3 Macro
'
Dim Derlig As Long
'
Sheets("Feuil1").Select
Derlig = Range("A65536").End(xlUp).Row
Range(Cells(1, 1), Cells(Derlig, 3)).Copy
Sheets("Feuil3").Select
Derlig = Range("A65536").End(xlUp).Row + 1
Cells(Derlig, 1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("Feuil2").Select
Derlig = Range("A65536").End(xlUp).Row
Range(Cells(1, 1), Cells(Derlig, 3)).Copy
Sheets("Feuil3").Select
Derlig = Range("A65536").End(xlUp).Row + 1
Cells(Derlig, 1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End Sub
Ton code était presque correct, les 2 problèmes étaient :
1/ la double déclaration de Derlig
2/ avant le paste il faut selectionner la cellule
Cela doit fonctionner
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merco Pilas,
J'avance petit à petit.
J'ai créé un code suite à tes infos avec création d'un Tab Croisé Dyn et j'ai un nouveau problème ... !!!
J'ai tenté +sieurs macros
1ére macro: directement avec sélection de données comme tu m'as appris puis insertion d'un tab croisé dyn.
2éme macro: Création d'une page - Insertion d'un tab Croisé Dyn
Le problèmeapparaît dès la commande "activeworkbook"
Voici mon code:
Sub Import_données()
'
' Import_données Macro
'
'
ChDir "C:\Users\ct2017\Local"
Workbooks.Open Filename:="C:\Users\ct2017\Local\Extraction_Mois.xls"
'
Dim Derlig As Long
'
Sheets("Mois").Select
Derlig = Range("A65536").End(xlUp).Row
Range(Cells(1, 1), Cells(Derlig, 7)).Copy
Windows("Stat.xls").Activate
Sheets("Année").Select
Derlig = Range("A65536").End(xlUp).Row + 1
Cells(Derlig, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Mois").Select
Derlig = Range("A65536").End(xlUp).Row + 1
Cells(Derlig, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'
Windows("Extraction_Mois.xls").Activate
ActiveWorkbook.Close
'
Sheets("Année").Select
Derlig = Range("A65536").End(xlUp).Row
Range(Cells(1, 1), Cells(Derlig, 11)).Select
'
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Année!L1C1:L34C11", Version:=xlPivotTableVersion10).CreatePivotTable _
TableDestination:="Graph1!L4C1", TableName:="Tableau croisé dynamique1", _
DefaultVersion:=xlPivotTableVersion10
Sheets("Graph1").Select
Cells(4, 1).Select
End Sub
J'avance petit à petit.
J'ai créé un code suite à tes infos avec création d'un Tab Croisé Dyn et j'ai un nouveau problème ... !!!
J'ai tenté +sieurs macros
1ére macro: directement avec sélection de données comme tu m'as appris puis insertion d'un tab croisé dyn.
2éme macro: Création d'une page - Insertion d'un tab Croisé Dyn
Le problèmeapparaît dès la commande "activeworkbook"
Voici mon code:
Sub Import_données()
'
' Import_données Macro
'
'
ChDir "C:\Users\ct2017\Local"
Workbooks.Open Filename:="C:\Users\ct2017\Local\Extraction_Mois.xls"
'
Dim Derlig As Long
'
Sheets("Mois").Select
Derlig = Range("A65536").End(xlUp).Row
Range(Cells(1, 1), Cells(Derlig, 7)).Copy
Windows("Stat.xls").Activate
Sheets("Année").Select
Derlig = Range("A65536").End(xlUp).Row + 1
Cells(Derlig, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Mois").Select
Derlig = Range("A65536").End(xlUp).Row + 1
Cells(Derlig, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'
Windows("Extraction_Mois.xls").Activate
ActiveWorkbook.Close
'
Sheets("Année").Select
Derlig = Range("A65536").End(xlUp).Row
Range(Cells(1, 1), Cells(Derlig, 11)).Select
'
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Année!L1C1:L34C11", Version:=xlPivotTableVersion10).CreatePivotTable _
TableDestination:="Graph1!L4C1", TableName:="Tableau croisé dynamique1", _
DefaultVersion:=xlPivotTableVersion10
Sheets("Graph1").Select
Cells(4, 1).Select
End Sub
Bonjour,
J'ai regardé ton problème et voilà la solution qui fonctionne chez moi :
Juste une petite remarque, si tu veux que tout le tableau soit pris en compte pour le tableau croisé dynamique et si je reprends la fin de ton code, cela devient :
Voilà mais attention cela ne fonctionne que la première fois puisque c'est une création.
A+
J'ai regardé ton problème et voilà la solution qui fonctionne chez moi :
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "Année!R1C1:R21C8").CreatePivotTable TableDestination:="Graph1!R4C1", TableName:= _ "Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
Juste une petite remarque, si tu veux que tout le tableau soit pris en compte pour le tableau croisé dynamique et si je reprends la fin de ton code, cela devient :
Sheets("Année").Select
Derlig = Range("A65536").End(xlUp).Row
Range(Cells(1, 1), Cells(Derlig, 11)).Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Selection) _
.CreatePivotTable TableDestination:="Graph1!R4C1", TableName:="Tableau croisé dynamique1", _
DefaultVersion:=xlPivotTableVersion10
Voilà mais attention cela ne fonctionne que la première fois puisque c'est une création.
A+
Bonjour,
Oui tu peux déposer le fichier sur www.cijoint.fr et me donner le lien pour le télécharger.
A+
Oui tu peux déposer le fichier sur www.cijoint.fr et me donner le lien pour le télécharger.
A+
Salut Pilas,
voici le lien.
http://www.cijoint.fr/cjlink.php?file=cj200903/cijDwPvDNj.xls
J'ai ajouté dans le fichier l'onglet "extraction_Mois" qui normalement est un autre fichier.
Pour que la macro corresponde il faut extraire cette onglet et le coller dans un fichier du même nom avec en nom d'onglet "Mois"
De plus la macro fait référence à l'arborescence de mon poste il faudra que tu modifies, mais c'est toi le pro pas moi, donc tu dois savoir....
Je te remercie de ton attention*
A+
voici le lien.
http://www.cijoint.fr/cjlink.php?file=cj200903/cijDwPvDNj.xls
J'ai ajouté dans le fichier l'onglet "extraction_Mois" qui normalement est un autre fichier.
Pour que la macro corresponde il faut extraire cette onglet et le coller dans un fichier du même nom avec en nom d'onglet "Mois"
De plus la macro fait référence à l'arborescence de mon poste il faudra que tu modifies, mais c'est toi le pro pas moi, donc tu dois savoir....
Je te remercie de ton attention*
A+
Re Bonjour,
Voila, j'ai modifié ton classeur pour qu'il fonctionne. Tu trouveras ma version sur cijoint :
http://www.cijoint.fr/cjlink.php?file=cj200903/cijnL7RFCg.xls
Les principales modifications sont les suivantes :
1/ la fonction de création du TCD est corrigée
2/ Si le TCD existe déjà, on ne fait que modifier la source de données, s'il n'existe pas on le crée. Ainsi tu peux activer l'import régulièrement, le tableau se complète et le TCD se met à jour
3/ Il faut que la feuille Graph1 existe (je l'ai ajoutée, il ne faut pas la supprimer)
4/ j'ai pris l'initiative de corriger un peu les formules des colonnes de H à K pour que les cellules restent blanches lorsqu'il n'y a pas d'incident
Regardes le code de la macro et dis-moi s’il y a encore des problèmes ou s’il y a des choses que tu ne comprends pas.
A+
Voila, j'ai modifié ton classeur pour qu'il fonctionne. Tu trouveras ma version sur cijoint :
http://www.cijoint.fr/cjlink.php?file=cj200903/cijnL7RFCg.xls
Les principales modifications sont les suivantes :
1/ la fonction de création du TCD est corrigée
2/ Si le TCD existe déjà, on ne fait que modifier la source de données, s'il n'existe pas on le crée. Ainsi tu peux activer l'import régulièrement, le tableau se complète et le TCD se met à jour
3/ Il faut que la feuille Graph1 existe (je l'ai ajoutée, il ne faut pas la supprimer)
4/ j'ai pris l'initiative de corriger un peu les formules des colonnes de H à K pour que les cellules restent blanches lorsqu'il n'y a pas d'incident
Regardes le code de la macro et dis-moi s’il y a encore des problèmes ou s’il y a des choses que tu ne comprends pas.
A+
Salut Pilas,
Merci la macro fonctionne super.
Je tente de comprendre les commandes en faisant défiler la macro pas à pas.
Je tenterai de la comparer avec la macro originale pour identifier les erreurs.
Merci également pour la modif des formules.... je savais faire mais je n'ai pas prit le temps....
Petite question tout de même:
Si je souhaite rajouter un graphique via un TDC dois-je créér un nouveau TDC ?
J'ai tenté de la faire mais sans grand succès.... !!!
Comme d'hab ....
A+
Merci la macro fonctionne super.
Je tente de comprendre les commandes en faisant défiler la macro pas à pas.
Je tenterai de la comparer avec la macro originale pour identifier les erreurs.
Merci également pour la modif des formules.... je savais faire mais je n'ai pas prit le temps....
Petite question tout de même:
Si je souhaite rajouter un graphique via un TDC dois-je créér un nouveau TDC ?
J'ai tenté de la faire mais sans grand succès.... !!!
Comme d'hab ....
A+
Salut Fabnad,
Pour répondre à ta question non il n'est pas utile de créer un nouveau TCD. Par VBA il suffit de mettre les instructions suivantes :
Cela créé un graphique à partir du TCD de la feuille "Graph1" dans une nouvelle feuille.
Chaque fois que tu exécutes ce code, une nouvelle feuille est créée toujours à partir du même TCD.
A+
Pour répondre à ta question non il n'est pas utile de créer un nouveau TCD. Par VBA il suffit de mettre les instructions suivantes :
Charts.Add
ActiveChart.SetSourceData Source:=Sheets("Graph1").Range("A4")
ActiveChart.Location Where:=xlLocationAsNewSheet
Cela créé un graphique à partir du TCD de la feuille "Graph1" dans une nouvelle feuille.
Chaque fois que tu exécutes ce code, une nouvelle feuille est créée toujours à partir du même TCD.
A+