Macro excel 2003
Résolu/Fermé
bartone
Messages postés
19
Date d'inscription
mardi 9 décembre 2008
Statut
Membre
Dernière intervention
19 février 2010
-
2 sept. 2009 à 13:05
bartone Messages postés 19 Date d'inscription mardi 9 décembre 2008 Statut Membre Dernière intervention 19 février 2010 - 4 sept. 2009 à 12:48
bartone Messages postés 19 Date d'inscription mardi 9 décembre 2008 Statut Membre Dernière intervention 19 février 2010 - 4 sept. 2009 à 12:48
A voir également:
- Macro excel 2003
- 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
13 réponses
roni77300
Messages postés
25
Date d'inscription
lundi 31 août 2009
Statut
Membre
Dernière intervention
27 octobre 2009
2 sept. 2009 à 13:08
2 sept. 2009 à 13:08
bonjour,
peux tu me donner ta premiere macro que je vois ce que cela donne.
je regarde ce que je peux faire et je te transmet la solution dans la journée.
peux tu me donner ta premiere macro que je vois ce que cela donne.
je regarde ce que je peux faire et je te transmet la solution dans la journée.
bartone
Messages postés
19
Date d'inscription
mardi 9 décembre 2008
Statut
Membre
Dernière intervention
19 février 2010
2 sept. 2009 à 13:34
2 sept. 2009 à 13:34
Voilà le code, moi j'ai utilisé l'enregistreur de macro !
Sub Macro3()
'
' Macro3 Macro
' Macro enregistrée le 02/09/2009 par Eric'
'
Range("B3:H3").Select
Selection.Copy
Windows("Classeur2").Activate
ActiveWindow.WindowState = xlNormal
Range("A1").Select
ActiveSheet.Paste
Windows("Classeur2.xls").Activate
Range("J3:R3").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Classeur2").Activate
Range("A2").Select
ActiveSheet.Paste
Windows("Classeur2.xls").Activate
Range("T3:AC3").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Classeur2").Activate
Range("A3").Select
ActiveSheet.Paste
Windows("Classeur2.xls").Activate
Range("AE3:AN3").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Classeur2").Activate
Range("A4").Select
ActiveSheet.Paste
Windows("Classeur2.xls").Activate
End Sub
Merci
Sub Macro3()
'
' Macro3 Macro
' Macro enregistrée le 02/09/2009 par Eric'
'
Range("B3:H3").Select
Selection.Copy
Windows("Classeur2").Activate
ActiveWindow.WindowState = xlNormal
Range("A1").Select
ActiveSheet.Paste
Windows("Classeur2.xls").Activate
Range("J3:R3").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Classeur2").Activate
Range("A2").Select
ActiveSheet.Paste
Windows("Classeur2.xls").Activate
Range("T3:AC3").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Classeur2").Activate
Range("A3").Select
ActiveSheet.Paste
Windows("Classeur2.xls").Activate
Range("AE3:AN3").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Classeur2").Activate
Range("A4").Select
ActiveSheet.Paste
Windows("Classeur2.xls").Activate
End Sub
Merci
Le Pingou
Messages postés
12035
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
1 avril 2024
1 425
2 sept. 2009 à 17:56
2 sept. 2009 à 17:56
Bonjour,
Essayez avec le code ci après, à copier dans le module de la feuille à traiter:
Sub CopierGrouper()
' boucle sur feuille 1
For cl = 2 To WorksheetFunction.CountA(Columns(1))
' boucle sur les groupes
For cc = 1 To 11 Step 5
Range(Cells(cl, cc), Cells(cl, cc + 4)).Copy Destination:=Sheets("bartone_2").Cells(WorksheetFunction.CountA(Sheets("bartone_2").Columns(1)) + 1, 1)
Next cc
Next cl
End Sub
Essayez avec le code ci après, à copier dans le module de la feuille à traiter:
Sub CopierGrouper()
' boucle sur feuille 1
For cl = 2 To WorksheetFunction.CountA(Columns(1))
' boucle sur les groupes
For cc = 1 To 11 Step 5
Range(Cells(cl, cc), Cells(cl, cc + 4)).Copy Destination:=Sheets("bartone_2").Cells(WorksheetFunction.CountA(Sheets("bartone_2").Columns(1)) + 1, 1)
Next cc
Next cl
End Sub
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
2 sept. 2009 à 19:33
2 sept. 2009 à 19:33
Bonjour Bartone, cher Jean-Pierre
a essayer ( ca marche avec 10 lignes de 3 colonnes mais j'ignore ce que ca peut donner avec quelques 2250 données: saturation- mémoire(?)) :
Bartone: si ca marche,pourrais tu m'envoyer la feuille avec les 750 lignes sur
https://www.cjoint.com/
j'aimerais chronométrer la durée de la transposition (j'ai un autre plan dans mes cartons...). D'avance merci
a essayer ( ca marche avec 10 lignes de 3 colonnes mais j'ignore ce que ca peut donner avec quelques 2250 données: saturation- mémoire(?)) :
Sub transposer_en_colonne() Dim lig_dep As Byte, col_dep As Byte, derlig As Integer Dim tablo Dim cptr_tablo As Integer With Sheets(1) ' initialisation lig_dep = 2 'ligne de départ des données col_dep = 1 'colonne de départ des données derlig = .Cells(65536, 1).End(xlUp).Row ReDim tablo((derlig - 1) * 3) 'collecte dans un tableau des données "ABC" For lig = lig_dep To derlig For col = col_dep To col_dep + 2 tablo(cptr_tablo) = .Cells(lig, col) cptr_tablo = cptr_tablo + 1 Next Next End With 'restitue en feuille 2 sur une colonne With Sheets(2) .Range("A2:A3000").ClearContents .Range("A2").Resize(UBound(tablo), 1) = Application.Transpose(tablo) End With End Sub
Bartone: si ca marche,pourrais tu m'envoyer la feuille avec les 750 lignes sur
https://www.cjoint.com/
j'aimerais chronométrer la durée de la transposition (j'ai un autre plan dans mes cartons...). D'avance merci
Le Pingou
Messages postés
12035
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
1 avril 2024
1 425
2 sept. 2009 à 21:42
2 sept. 2009 à 21:42
Bonsoir michel_m,
Si je vois juste vous passez par une variable tableau intermédiaire, très intéressant je vais voir comment sa marche.
Il y a un problème d'après les données de Bartone le résultat demandé est :
A 4200 PES ODG 2564014
B 1200 PAR ODF 152458
C 12 LYO 7821456
A 4500 PES ODG 2457545
B 1400 PAR ODF 15424
C 25 LYO 457821
Votre résultat est :
A
4200
PES
A
4500
PES
A une prochaine.
Si je vois juste vous passez par une variable tableau intermédiaire, très intéressant je vais voir comment sa marche.
Il y a un problème d'après les données de Bartone le résultat demandé est :
A 4200 PES ODG 2564014
B 1200 PAR ODF 152458
C 12 LYO 7821456
A 4500 PES ODG 2457545
B 1400 PAR ODF 15424
C 25 LYO 457821
Votre résultat est :
A
4200
PES
A
4500
PES
A une prochaine.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
2 sept. 2009 à 22:29
2 sept. 2009 à 22:29
Bonsoir Jean-Pierre,
d'après ce que j'ai compris, il n'y aurait que 3 colonnes...
J'ai réalisé facilement une macro qui copie-colle les cellules de ma premiere ligne
"A 4200 PES ODG 2564014" , "B 1200 PAR ODF 152458 " et "C 12 LYO 7821456" dans un nouveau classeur respectivement dans les cellules A1, A2 et A3
donc j'ai interprété que:
"A 4200 PES ODG 2564014" était dans une seule cellule
Ci joint démo avec environ 760 lignes: c'est pratiquement instantané...
(j'ai ajouté activate à la fin de la macro)
https://www.cjoint.com/?jcwzg1NpWl
Attendons donc que Bartone fasse signe
d'après ce que j'ai compris, il n'y aurait que 3 colonnes...
J'ai réalisé facilement une macro qui copie-colle les cellules de ma premiere ligne
"A 4200 PES ODG 2564014" , "B 1200 PAR ODF 152458 " et "C 12 LYO 7821456" dans un nouveau classeur respectivement dans les cellules A1, A2 et A3
donc j'ai interprété que:
"A 4200 PES ODG 2564014" était dans une seule cellule
Ci joint démo avec environ 760 lignes: c'est pratiquement instantané...
(j'ai ajouté activate à la fin de la macro)
https://www.cjoint.com/?jcwzg1NpWl
Attendons donc que Bartone fasse signe
Le Pingou
Messages postés
12035
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
1 avril 2024
1 425
2 sept. 2009 à 22:54
2 sept. 2009 à 22:54
Bonsoir Michel,
Oui effectivement je suis passé sur:
J'ai réalisé facilement une macro qui copie-colle les cellules de ma premiere ligne
"A 4200 PES ODG 2564014" , "B 1200 PAR ODF 152458 " et "C 12 LYO 7821456" dans un nouveau classeur respectivement dans les cellules A1, A2 et A3
Par contre j'ai oublié la conversion des données que j'ai réalisées en copiant ses données.
Alors au travail le petit ...
Oui effectivement je suis passé sur:
J'ai réalisé facilement une macro qui copie-colle les cellules de ma premiere ligne
"A 4200 PES ODG 2564014" , "B 1200 PAR ODF 152458 " et "C 12 LYO 7821456" dans un nouveau classeur respectivement dans les cellules A1, A2 et A3
Par contre j'ai oublié la conversion des données que j'ai réalisées en copiant ses données.
Alors au travail le petit ...
Le Pingou
Messages postés
12035
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
1 avril 2024
1 425
2 sept. 2009 à 23:23
2 sept. 2009 à 23:23
Bonsoir,
Voici ma proposition corrigée : https://www.cjoint.com/?jcxwkGfCvD
Voici ma proposition corrigée : https://www.cjoint.com/?jcxwkGfCvD
bartone
Messages postés
19
Date d'inscription
mardi 9 décembre 2008
Statut
Membre
Dernière intervention
19 février 2010
3 sept. 2009 à 10:49
3 sept. 2009 à 10:49
Bonjour,
Merci vraiment pour la peine que vous vous êtes donnés pour résoudre mon problème. En fait mon tableau ne fait plus que 413 lignes apres nettoyage.
Au départ, il se presentait sous cette forme :
https://www.cjoint.com/?jdkvNcAsrP
A l'arrivée j'ai reussi à avoir ce que je voulais :
https://www.cjoint.com/?jdkyTn4uR1
Pour parvenir à ce résultat, j'ai numéroté les 4 colonnes jaunes de 1 à 413, puis j'ai coupé-collé les 3 blocs (entre chaque colonne jaune) de plusieurs cellules les uns en dessous des autres. Le deuxième sous le premier, le troisième sous le deuxième et le quatrième sous le troisième. Enfin j'ai fait un tri par ordre croissant du tableau obtenu et supprimé la colonne transitoire 1 à 413. J'espère avoir été assez clair !
J'ai quand même regardé, essayé, voire de piger votre code hélas je crains que mes compétences ont atteint leur limite ! De plus le dernier lien me renvoie une erreur visual basic "400" : https://www.cjoint.com/?jcxwkGfCvD
Si l'un d'entre vous parvient à faire fonctionner sa "moulinette", je suis très interessé parce que j'ai pas mal de tableaux dans ce genre à retravailler.
Merci encore pour vos contributions ...
Merci vraiment pour la peine que vous vous êtes donnés pour résoudre mon problème. En fait mon tableau ne fait plus que 413 lignes apres nettoyage.
Au départ, il se presentait sous cette forme :
https://www.cjoint.com/?jdkvNcAsrP
A l'arrivée j'ai reussi à avoir ce que je voulais :
https://www.cjoint.com/?jdkyTn4uR1
Pour parvenir à ce résultat, j'ai numéroté les 4 colonnes jaunes de 1 à 413, puis j'ai coupé-collé les 3 blocs (entre chaque colonne jaune) de plusieurs cellules les uns en dessous des autres. Le deuxième sous le premier, le troisième sous le deuxième et le quatrième sous le troisième. Enfin j'ai fait un tri par ordre croissant du tableau obtenu et supprimé la colonne transitoire 1 à 413. J'espère avoir été assez clair !
J'ai quand même regardé, essayé, voire de piger votre code hélas je crains que mes compétences ont atteint leur limite ! De plus le dernier lien me renvoie une erreur visual basic "400" : https://www.cjoint.com/?jcxwkGfCvD
Si l'un d'entre vous parvient à faire fonctionner sa "moulinette", je suis très interessé parce que j'ai pas mal de tableaux dans ce genre à retravailler.
Merci encore pour vos contributions ...
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
3 sept. 2009 à 11:40
3 sept. 2009 à 11:40
Bonjour Bartone,
tu es bien gentil, mais tu vois les désagréments que tu as causé car plusieurs contributeurs ont essayé de t'aider à partir de ce que tu avais écrit:
J'ai réalisé facilement une macro qui copie-colle les cellules de ma premiere ligne
"A 4200 PES ODG 2564014" , "B 1200 PAR ODF 152458 " et "C 12 LYO 7821456" dans un nouveau classeur respectivement dans les cellules A1, A2 et A3
il y a eu un petit débat amical entre Jean-Pierre et moi à ce sujet
Or, la réalité de ton classeur ne correspond pas du tout à ce que tu as écris: comprend donc que je ne sois pas très chaud pour rechercher à nouveau
ma proc fonctionne (mon dernier message): tu dois pouvoir l'adapter à ton classeur en décalant entre les colonnes jaunes
Désolé.
tu es bien gentil, mais tu vois les désagréments que tu as causé car plusieurs contributeurs ont essayé de t'aider à partir de ce que tu avais écrit:
J'ai réalisé facilement une macro qui copie-colle les cellules de ma premiere ligne
"A 4200 PES ODG 2564014" , "B 1200 PAR ODF 152458 " et "C 12 LYO 7821456" dans un nouveau classeur respectivement dans les cellules A1, A2 et A3
il y a eu un petit débat amical entre Jean-Pierre et moi à ce sujet
Or, la réalité de ton classeur ne correspond pas du tout à ce que tu as écris: comprend donc que je ne sois pas très chaud pour rechercher à nouveau
ma proc fonctionne (mon dernier message): tu dois pouvoir l'adapter à ton classeur en décalant entre les colonnes jaunes
Désolé.
bartone
Messages postés
19
Date d'inscription
mardi 9 décembre 2008
Statut
Membre
Dernière intervention
19 février 2010
3 sept. 2009 à 12:29
3 sept. 2009 à 12:29
Sincerement désolé . Je voulais vous retranscrire les choses de façon simple et c'est pourquoi j'ai opté pour cet exemple qui certes, ne correspond pas tout à fait à mon tableau final. En fonction du retour, je pense que j'aurais été capable de l'adapter à mes données.
Avant de vous écrire, je ne connaissais même pas la possibilité de vous joindre un fichier sinon je pense que je l'aurais fait, ça aurait été effectivement bcp plus simple.
Je ferai mieux la prochaine fois, encore merci !
Avant de vous écrire, je ne connaissais même pas la possibilité de vous joindre un fichier sinon je pense que je l'aurais fait, ça aurait été effectivement bcp plus simple.
Je ferai mieux la prochaine fois, encore merci !
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
3 sept. 2009 à 12:34
3 sept. 2009 à 12:34
OK, sans rancune et à la prochaine
Le Pingou
Messages postés
12035
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
1 avril 2024
1 425
3 sept. 2009 à 17:12
3 sept. 2009 à 17:12
Bonjour,
Pour ceci :
J'ai quand même regardé, essayé, voire de piger votre code hélas je crains que mes compétences ont atteint leur limite ! De plus le dernier lien me renvoie une erreur visual basic "400" :
Essayez donc cette version : https://www.cjoint.com/?jdrlAu5Eli
Malgré la déception entre votre demande et vos 2 tableaux, j’ai pris la peine de les étudier.
Désolé de vous dire qu’il va être très difficile de faire mieux que votre manipulation en regard du tableau [A l'arrivée] dont il est impossible de reconnaître qui est qui ; par colonne on trouve des données incohérentes … !
Pour ceci :
J'ai quand même regardé, essayé, voire de piger votre code hélas je crains que mes compétences ont atteint leur limite ! De plus le dernier lien me renvoie une erreur visual basic "400" :
Essayez donc cette version : https://www.cjoint.com/?jdrlAu5Eli
Malgré la déception entre votre demande et vos 2 tableaux, j’ai pris la peine de les étudier.
Désolé de vous dire qu’il va être très difficile de faire mieux que votre manipulation en regard du tableau [A l'arrivée] dont il est impossible de reconnaître qui est qui ; par colonne on trouve des données incohérentes … !
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 684
3 sept. 2009 à 21:27
3 sept. 2009 à 21:27
bonjour à tous,
J'avais regardé cette question mais comme la macro faisait tout à fait autre chose que ce qui était posé comme question, il était manifeste comme vous l'avez vu qu'il y aurait impossibilité de donner la solution espérée.
Je voulais vous retranscrire les choses de façon simple et c'est pourquoi j'ai opté pour cet exemple qui certes, ne correspond pas tout à fait à mon tableau final
bonjour bartone,
Quand tu dis ceci, saches que c'est la seule solution à ne pas adapter car tu vas systématiquement entrainer tes lecteurs sur une fausse piste et tu n'auras jamais la solution voulue.
En fonction du retour, je pense que j'aurais été capable de l'adapter à mes données.
Comme les solutions que l'on te propose ne seront pas adaptées à un problème autre que celui exposé tu n'auras aucune chance de pouvoir les adapter.
La preuve, c'est que Le Pingou t'as donné (dans le poste 3) une solution très proche de ce qui peut être fait et que tu ne l'a pas saisie.
Dans la mesure où tu encadres tes blocs avec une colonne colorée, comme tu l'as fait dans ton exemple, je te propose la macro "recadre" dans le fichier joint qui obtient le résultat que tu as obtenu en mettant le résultat dans la feuille 2.
http://www.cijoint.fr/cjlink.php?file=cj200909/cijGZxypXj.xls
J'avais regardé cette question mais comme la macro faisait tout à fait autre chose que ce qui était posé comme question, il était manifeste comme vous l'avez vu qu'il y aurait impossibilité de donner la solution espérée.
Je voulais vous retranscrire les choses de façon simple et c'est pourquoi j'ai opté pour cet exemple qui certes, ne correspond pas tout à fait à mon tableau final
bonjour bartone,
Quand tu dis ceci, saches que c'est la seule solution à ne pas adapter car tu vas systématiquement entrainer tes lecteurs sur une fausse piste et tu n'auras jamais la solution voulue.
En fonction du retour, je pense que j'aurais été capable de l'adapter à mes données.
Comme les solutions que l'on te propose ne seront pas adaptées à un problème autre que celui exposé tu n'auras aucune chance de pouvoir les adapter.
La preuve, c'est que Le Pingou t'as donné (dans le poste 3) une solution très proche de ce qui peut être fait et que tu ne l'a pas saisie.
Dans la mesure où tu encadres tes blocs avec une colonne colorée, comme tu l'as fait dans ton exemple, je te propose la macro "recadre" dans le fichier joint qui obtient le résultat que tu as obtenu en mettant le résultat dans la feuille 2.
http://www.cijoint.fr/cjlink.php?file=cj200909/cijGZxypXj.xls
bartone
Messages postés
19
Date d'inscription
mardi 9 décembre 2008
Statut
Membre
Dernière intervention
19 février 2010
4 sept. 2009 à 12:48
4 sept. 2009 à 12:48
Bonjour,
Je suis assez stupéfait de tout de ce que vous avez fait pour moi. Quelle richesse et quelles ressources !
J'ai bien compris que je n'avais pas poser le problème comme il se doit. Vos recommandations et vos observations sont tres pertinentes et je saurai en faire bon usage pour les éventuelles questions à venir.
Bravo pour les macro "ConvertirCopierColler" et "recadre", résultats aussi bluffants que magiques.
Je découvre ce site depuis peu et je suis assez émerveillé par la qualité des intervenants.
Merci encore à tous et bonne continuation
Je suis assez stupéfait de tout de ce que vous avez fait pour moi. Quelle richesse et quelles ressources !
J'ai bien compris que je n'avais pas poser le problème comme il se doit. Vos recommandations et vos observations sont tres pertinentes et je saurai en faire bon usage pour les éventuelles questions à venir.
Bravo pour les macro "ConvertirCopierColler" et "recadre", résultats aussi bluffants que magiques.
Je découvre ce site depuis peu et je suis assez émerveillé par la qualité des intervenants.
Merci encore à tous et bonne continuation