Macro excel - Réunir des données
Fermé
fabnad
Messages postés
28
Date d'inscription
dimanche 21 janvier 2007
Statut
Membre
Dernière intervention
16 mars 2010
-
5 mars 2009 à 10:33
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 - 21 mars 2009 à 15:39
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 - 21 mars 2009 à 15:39
A voir également:
- Macro excel - Réunir des données
- Liste déroulante excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Formule excel - Guide
- Macro word - Guide
- Si et excel - Guide
9 réponses
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
643
5 mars 2009 à 10:48
5 mars 2009 à 10:48
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+
fabnad
Messages postés
28
Date d'inscription
dimanche 21 janvier 2007
Statut
Membre
Dernière intervention
16 mars 2010
5 mars 2009 à 16:36
5 mars 2009 à 16:36
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"...!!!
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
643
5 mars 2009 à 17:05
5 mars 2009 à 17:05
Salut,
Je regarde et je te dis....
A+
Je regarde et je te dis....
A+
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
643
5 mars 2009 à 17:15
5 mars 2009 à 17:15
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
fabnad
Messages postés
28
Date d'inscription
dimanche 21 janvier 2007
Statut
Membre
Dernière intervention
16 mars 2010
6 mars 2009 à 23:44
6 mars 2009 à 23:44
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
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
643
8 mars 2009 à 18:47
8 mars 2009 à 18:47
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+
fabnad
Messages postés
28
Date d'inscription
dimanche 21 janvier 2007
Statut
Membre
Dernière intervention
16 mars 2010
9 mars 2009 à 11:56
9 mars 2009 à 11:56
Bonjour Pilas,
Merci de ton attention.
Je n'arrive pas à avancer malgré tes infos.
Je me demande si cela ne provient pas de mon fichier.
Est il possible de t'envoyer mon support de travail afin que tu fasses des tests dessus?
A+
Merci de ton attention.
Je n'arrive pas à avancer malgré tes infos.
Je me demande si cela ne provient pas de mon fichier.
Est il possible de t'envoyer mon support de travail afin que tu fasses des tests dessus?
A+
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
643
9 mars 2009 à 16:33
9 mars 2009 à 16:33
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+
fabnad
Messages postés
28
Date d'inscription
dimanche 21 janvier 2007
Statut
Membre
Dernière intervention
16 mars 2010
10 mars 2009 à 11:11
10 mars 2009 à 11:11
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+
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
643
>
fabnad
Messages postés
28
Date d'inscription
dimanche 21 janvier 2007
Statut
Membre
Dernière intervention
16 mars 2010
10 mars 2009 à 12:08
10 mars 2009 à 12:08
Salut,
Ok je regarde
A+
Ok je regarde
A+
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
643
10 mars 2009 à 17:19
10 mars 2009 à 17:19
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+
fabnad
Messages postés
28
Date d'inscription
dimanche 21 janvier 2007
Statut
Membre
Dernière intervention
16 mars 2010
12 mars 2009 à 19:26
12 mars 2009 à 19:26
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+
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
643
12 mars 2009 à 22:21
12 mars 2009 à 22:21
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+
fabnad
Messages postés
28
Date d'inscription
dimanche 21 janvier 2007
Statut
Membre
Dernière intervention
16 mars 2010
15 mars 2009 à 15:58
15 mars 2009 à 15:58
Salut,
Manip de copie dans une autre feuille ok
Par contre si je change les données dans le TCD cela me change les donnés dans le graph de la nouvelle feuille....!!!
Donc impossible de créer d'autres graph compétement différent par cette commande....
Donc je relance encore un SOS
Manip de copie dans une autre feuille ok
Par contre si je change les données dans le TCD cela me change les donnés dans le graph de la nouvelle feuille....!!!
Donc impossible de créer d'autres graph compétement différent par cette commande....
Donc je relance encore un SOS
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
643
>
fabnad
Messages postés
28
Date d'inscription
dimanche 21 janvier 2007
Statut
Membre
Dernière intervention
16 mars 2010
21 mars 2009 à 15:39
21 mars 2009 à 15:39
Bonjour,
Je viens de voir ta remarque.
Alors, rien ne t'empêche de créer un autre TCD dans une autre feuille à partir des mêmes données et un autre graphe à partir de ce nouveau TCD. Tu peux dupliquer le code et changer les noms de la feuille et du TCD...
A+
Je viens de voir ta remarque.
Alors, rien ne t'empêche de créer un autre TCD dans une autre feuille à partir des mêmes données et un autre graphe à partir de ce nouveau TCD. Tu peux dupliquer le code et changer les noms de la feuille et du TCD...
A+