Je recois des feuilles excel dont les formats et les titres sont
inconsistants. Je souhaiterai d=E9velopper une petite application qui
permettrai facilement de reorganiser les colonnes en fonction d'un
ordre d=E9fini =E0 chaque fois sans aller changer le code dans la macro.
Par exemple,
colonne C de feuille "Source" est copi=E9e-coll=E9e dans la colonne A de
la feuille "Cible"
colonne D de feuille "Source" est copi=E9e-coll=E9e dans la colonne B de
la feuille "Cible"
colonne E de feuille "Source" est copi=E9e-coll=E9e dans la colonne C de
la feuille "Cible"
colonne R de feuille "Source" est copi=E9e-coll=E9e dans la colonne E de
la feuille "Cible"
colonne S de feuille "Source" est copi=E9e-coll=E9e dans la colonne F de
la feuille "Cible", etc.
Pour ceci j'imagine un fichier avec 3 feuilles
1- Une feuille "Correspondances" avec 2 colonnes
Dans la colonne A un menu d=E9roulant permettant de d=E9finir la lettre de
la colonne de la feuille d'origine =E0 faire correspondre avec A, B,
C,D, E, F, G,........ , AX, AY, AZ,...BZ, etc..de la colonne B
correspondant =E0 la destination de la colonne dans la feuille r=E9sultat.
2- Une feuille "Source" dans laquelle je pourrais copier coller les
donn=E9es d'origine =E0 r=E9organiser
3- Une feuille "Cible" dans laquelle les donn=E9es r=E9organis=E9es.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
isabelle
bonjour Christophe,
Sub Macro1() For i = 1 To Sheets("Correspondances").Range("A65536").End(xlUp).Row plg1 = Range(Sheets("Correspondances").Range("A" & i) & ":" & Sheets("Correspondances").Range("A" & i)).Address plg2 = Range(Sheets("Correspondances").Range("B" & i) & "1").Address Sheets("Source").Range(plg1).Copy Sheets("Cible").Range(plg2) Next End Sub
isabelle
Le 2010-08-09 17:06, Christophe a écrit :
Bonjour,
Excel 2007
Je recois des feuilles excel dont les formats et les titres sont inconsistants. Je souhaiterai développer une petite application qui permettrai facilement de reorganiser les colonnes en fonction d'un ordre défini à chaque fois sans aller changer le code dans la macro.
Par exemple, colonne C de feuille "Source" est copiée-collée dans la colonne A de la feuille "Cible" colonne D de feuille "Source" est copiée-collée dans la colonne B de la feuille "Cible" colonne E de feuille "Source" est copiée-collée dans la colonne C de la feuille "Cible" colonne R de feuille "Source" est copiée-collée dans la colonne E de la feuille "Cible" colonne S de feuille "Source" est copiée-collée dans la colonne F de la feuille "Cible", etc.
Pour ceci j'imagine un fichier avec 3 feuilles
1- Une feuille "Correspondances" avec 2 colonnes Dans la colonne A un menu déroulant permettant de définir la lettre de la colonne de la feuille d'origine à faire correspondre avec A, B, C,D, E, F, G,........ , AX, AY, AZ,...BZ, etc..de la colonne B correspondant à la destination de la colonne dans la feuille résultat.
2- Une feuille "Source" dans laquelle je pourrais copier coller les données d'origine à réorganiser
3- Une feuille "Cible" dans laquelle les données réorganisées.
Y-a plus qu' à créer la macro maintenant:-)
Remerciements et sincères salutations.
Christophe
bonjour Christophe,
Sub Macro1()
For i = 1 To Sheets("Correspondances").Range("A65536").End(xlUp).Row
plg1 = Range(Sheets("Correspondances").Range("A" & i) & ":" & Sheets("Correspondances").Range("A" & i)).Address
plg2 = Range(Sheets("Correspondances").Range("B" & i) & "1").Address
Sheets("Source").Range(plg1).Copy Sheets("Cible").Range(plg2)
Next
End Sub
isabelle
Le 2010-08-09 17:06, Christophe a écrit :
Bonjour,
Excel 2007
Je recois des feuilles excel dont les formats et les titres sont
inconsistants. Je souhaiterai développer une petite application qui
permettrai facilement de reorganiser les colonnes en fonction d'un
ordre défini à chaque fois sans aller changer le code dans la macro.
Par exemple,
colonne C de feuille "Source" est copiée-collée dans la colonne A de
la feuille "Cible"
colonne D de feuille "Source" est copiée-collée dans la colonne B de
la feuille "Cible"
colonne E de feuille "Source" est copiée-collée dans la colonne C de
la feuille "Cible"
colonne R de feuille "Source" est copiée-collée dans la colonne E de
la feuille "Cible"
colonne S de feuille "Source" est copiée-collée dans la colonne F de
la feuille "Cible", etc.
Pour ceci j'imagine un fichier avec 3 feuilles
1- Une feuille "Correspondances" avec 2 colonnes
Dans la colonne A un menu déroulant permettant de définir la lettre de
la colonne de la feuille d'origine à faire correspondre avec A, B,
C,D, E, F, G,........ , AX, AY, AZ,...BZ, etc..de la colonne B
correspondant à la destination de la colonne dans la feuille résultat.
2- Une feuille "Source" dans laquelle je pourrais copier coller les
données d'origine à réorganiser
3- Une feuille "Cible" dans laquelle les données réorganisées.
Sub Macro1() For i = 1 To Sheets("Correspondances").Range("A65536").End(xlUp).Row plg1 = Range(Sheets("Correspondances").Range("A" & i) & ":" & Sheets("Correspondances").Range("A" & i)).Address plg2 = Range(Sheets("Correspondances").Range("B" & i) & "1").Address Sheets("Source").Range(plg1).Copy Sheets("Cible").Range(plg2) Next End Sub
isabelle
Le 2010-08-09 17:06, Christophe a écrit :
Bonjour,
Excel 2007
Je recois des feuilles excel dont les formats et les titres sont inconsistants. Je souhaiterai développer une petite application qui permettrai facilement de reorganiser les colonnes en fonction d'un ordre défini à chaque fois sans aller changer le code dans la macro.
Par exemple, colonne C de feuille "Source" est copiée-collée dans la colonne A de la feuille "Cible" colonne D de feuille "Source" est copiée-collée dans la colonne B de la feuille "Cible" colonne E de feuille "Source" est copiée-collée dans la colonne C de la feuille "Cible" colonne R de feuille "Source" est copiée-collée dans la colonne E de la feuille "Cible" colonne S de feuille "Source" est copiée-collée dans la colonne F de la feuille "Cible", etc.
Pour ceci j'imagine un fichier avec 3 feuilles
1- Une feuille "Correspondances" avec 2 colonnes Dans la colonne A un menu déroulant permettant de définir la lettre de la colonne de la feuille d'origine à faire correspondre avec A, B, C,D, E, F, G,........ , AX, AY, AZ,...BZ, etc..de la colonne B correspondant à la destination de la colonne dans la feuille résultat.
2- Une feuille "Source" dans laquelle je pourrais copier coller les données d'origine à réorganiser
3- Une feuille "Cible" dans laquelle les données réorganisées.
Y-a plus qu' à créer la macro maintenant:-)
Remerciements et sincères salutations.
Christophe
Christophe
Isabelle:
Merci. Je suis réellement admiratif. Tout d'abord parce que tu as compris ma problématique alors que ma question était, comme souvent, pour le moins absconse et, parce que la solution que tu proposes est brillante même si je ne comprends pas tout.
J'ai bien entendu testé ta macro dans tous les cas de figure et il y a un cas ou elle ne fonctionne pas. C'est lorsque une ou plusieurs colonnes de la feuille source n'ont pas de correspondance avec une colonne de la feuille cible.
Dans le cas ci-dessous la colonne B de la feuille cible ne correspond à aucune colonne de la feuille source.
A ---------> A ---------> B B ---------> C C ---------> D
Dans ce cas, j'obtiens un Run-Time error '1004' Method Range of Object Global Fialed.
Enfin, comment modifier la macro pour ajouter un titre au colonne A et B de ma feuille "Correspondances"?
remercie et sincères salutations.
Christophe
Isabelle:
Merci. Je suis réellement admiratif. Tout d'abord parce que tu as
compris ma problématique alors que ma question était, comme souvent,
pour le moins absconse et, parce que la solution que tu proposes est
brillante même si je ne comprends pas tout.
J'ai bien entendu testé ta macro dans tous les cas de figure et il y a
un cas ou elle ne fonctionne pas. C'est lorsque une ou plusieurs
colonnes de la feuille source n'ont pas de correspondance avec une
colonne de la feuille cible.
Dans le cas ci-dessous la colonne B de la feuille cible ne correspond
à aucune colonne de la feuille source.
A ---------> A
---------> B
B ---------> C
C ---------> D
Dans ce cas, j'obtiens un Run-Time error '1004' Method Range of Object
Global Fialed.
Enfin, comment modifier la macro pour ajouter un titre au colonne A
et B de ma feuille "Correspondances"?
Merci. Je suis réellement admiratif. Tout d'abord parce que tu as compris ma problématique alors que ma question était, comme souvent, pour le moins absconse et, parce que la solution que tu proposes est brillante même si je ne comprends pas tout.
J'ai bien entendu testé ta macro dans tous les cas de figure et il y a un cas ou elle ne fonctionne pas. C'est lorsque une ou plusieurs colonnes de la feuille source n'ont pas de correspondance avec une colonne de la feuille cible.
Dans le cas ci-dessous la colonne B de la feuille cible ne correspond à aucune colonne de la feuille source.
A ---------> A ---------> B B ---------> C C ---------> D
Dans ce cas, j'obtiens un Run-Time error '1004' Method Range of Object Global Fialed.
Enfin, comment modifier la macro pour ajouter un titre au colonne A et B de ma feuille "Correspondances"?
remercie et sincères salutations.
Christophe
michdenis
Bonjour,
Si un jour, tu dois faire cela rapidement et tu ne veux pas prendre le temps de créer une macro, tu peux faire ceci :
A ) Tu copies la ligne d'étiquette de ton tableau vers la feuille où tu veux afficher l'ordre des champs différemment.
B ) Dans la ligne que tu viens de copier dans ta plage de destination à l'aide d'un copier-coller, tu modifies l'ordre de présentation des champs de la ligne d'étiquette comme tu le désires et tu fais disparaître ceux qui ne te sont pas utiles le cas échéant. (attention à la casse des noms de ta ligne d'étiquette)
C ) De ta feuille de destination, tu appelles la commande "Filtre élaboré" (avancé), tu remplis le champ "plages", tu laisses "vide" le champ critère et ayant activé le bouton radio "Copier vers un autre emplacement", tu indiques dans le champ "Copier dans" l'adresse de la ligne d'étiquette que tu as emménagé dans ta feuille d'étiquette. Tu cliques sur "OK" et toutes tes données sont copiées où il se doit. C'est beaucoup plus long à écrire qu'à faire !
"Christophe" a écrit dans le message de groupe de discussion :
Bonjour,
Excel 2007
Je recois des feuilles excel dont les formats et les titres sont inconsistants. Je souhaiterai développer une petite application qui permettrai facilement de reorganiser les colonnes en fonction d'un ordre défini à chaque fois sans aller changer le code dans la macro.
Par exemple, colonne C de feuille "Source" est copiée-collée dans la colonne A de la feuille "Cible" colonne D de feuille "Source" est copiée-collée dans la colonne B de la feuille "Cible" colonne E de feuille "Source" est copiée-collée dans la colonne C de la feuille "Cible" colonne R de feuille "Source" est copiée-collée dans la colonne E de la feuille "Cible" colonne S de feuille "Source" est copiée-collée dans la colonne F de la feuille "Cible", etc.
Pour ceci j'imagine un fichier avec 3 feuilles
1- Une feuille "Correspondances" avec 2 colonnes Dans la colonne A un menu déroulant permettant de définir la lettre de la colonne de la feuille d'origine à faire correspondre avec A, B, C,D, E, F, G,........ , AX, AY, AZ,...BZ, etc..de la colonne B correspondant à la destination de la colonne dans la feuille résultat.
2- Une feuille "Source" dans laquelle je pourrais copier coller les données d'origine à réorganiser
3- Une feuille "Cible" dans laquelle les données réorganisées.
Y-a plus qu' à créer la macro maintenant:-)
Remerciements et sincères salutations.
Christophe
Bonjour,
Si un jour, tu dois faire cela rapidement et tu ne veux pas prendre le temps de créer une macro,
tu peux faire ceci :
A ) Tu copies la ligne d'étiquette de ton tableau vers la feuille où tu veux afficher l'ordre des champs différemment.
B ) Dans la ligne que tu viens de copier dans ta plage de destination à l'aide d'un copier-coller, tu modifies l'ordre
de présentation des champs de la ligne d'étiquette comme tu le désires et tu fais disparaître ceux qui ne te sont pas
utiles le cas échéant. (attention à la casse des noms de ta ligne d'étiquette)
C ) De ta feuille de destination, tu appelles la commande "Filtre élaboré" (avancé), tu remplis le champ "plages", tu
laisses "vide" le champ critère et ayant activé le bouton radio "Copier vers un autre emplacement", tu indiques dans le
champ "Copier dans" l'adresse de la ligne d'étiquette que tu as emménagé dans ta feuille d'étiquette. Tu cliques sur
"OK" et toutes tes données sont copiées où il se doit.
C'est beaucoup plus long à écrire qu'à faire !
"Christophe" <cjoly@mail.doc.gov> a écrit dans le message de groupe de discussion :
3dd8d0b8-bdb8-423e-8458-0527ae55f2c8@t2g2000yqe.googlegroups.com...
Bonjour,
Excel 2007
Je recois des feuilles excel dont les formats et les titres sont
inconsistants. Je souhaiterai développer une petite application qui
permettrai facilement de reorganiser les colonnes en fonction d'un
ordre défini à chaque fois sans aller changer le code dans la macro.
Par exemple,
colonne C de feuille "Source" est copiée-collée dans la colonne A de
la feuille "Cible"
colonne D de feuille "Source" est copiée-collée dans la colonne B de
la feuille "Cible"
colonne E de feuille "Source" est copiée-collée dans la colonne C de
la feuille "Cible"
colonne R de feuille "Source" est copiée-collée dans la colonne E de
la feuille "Cible"
colonne S de feuille "Source" est copiée-collée dans la colonne F de
la feuille "Cible", etc.
Pour ceci j'imagine un fichier avec 3 feuilles
1- Une feuille "Correspondances" avec 2 colonnes
Dans la colonne A un menu déroulant permettant de définir la lettre de
la colonne de la feuille d'origine à faire correspondre avec A, B,
C,D, E, F, G,........ , AX, AY, AZ,...BZ, etc..de la colonne B
correspondant à la destination de la colonne dans la feuille résultat.
2- Une feuille "Source" dans laquelle je pourrais copier coller les
données d'origine à réorganiser
3- Une feuille "Cible" dans laquelle les données réorganisées.
Si un jour, tu dois faire cela rapidement et tu ne veux pas prendre le temps de créer une macro, tu peux faire ceci :
A ) Tu copies la ligne d'étiquette de ton tableau vers la feuille où tu veux afficher l'ordre des champs différemment.
B ) Dans la ligne que tu viens de copier dans ta plage de destination à l'aide d'un copier-coller, tu modifies l'ordre de présentation des champs de la ligne d'étiquette comme tu le désires et tu fais disparaître ceux qui ne te sont pas utiles le cas échéant. (attention à la casse des noms de ta ligne d'étiquette)
C ) De ta feuille de destination, tu appelles la commande "Filtre élaboré" (avancé), tu remplis le champ "plages", tu laisses "vide" le champ critère et ayant activé le bouton radio "Copier vers un autre emplacement", tu indiques dans le champ "Copier dans" l'adresse de la ligne d'étiquette que tu as emménagé dans ta feuille d'étiquette. Tu cliques sur "OK" et toutes tes données sont copiées où il se doit. C'est beaucoup plus long à écrire qu'à faire !
"Christophe" a écrit dans le message de groupe de discussion :
Bonjour,
Excel 2007
Je recois des feuilles excel dont les formats et les titres sont inconsistants. Je souhaiterai développer une petite application qui permettrai facilement de reorganiser les colonnes en fonction d'un ordre défini à chaque fois sans aller changer le code dans la macro.
Par exemple, colonne C de feuille "Source" est copiée-collée dans la colonne A de la feuille "Cible" colonne D de feuille "Source" est copiée-collée dans la colonne B de la feuille "Cible" colonne E de feuille "Source" est copiée-collée dans la colonne C de la feuille "Cible" colonne R de feuille "Source" est copiée-collée dans la colonne E de la feuille "Cible" colonne S de feuille "Source" est copiée-collée dans la colonne F de la feuille "Cible", etc.
Pour ceci j'imagine un fichier avec 3 feuilles
1- Une feuille "Correspondances" avec 2 colonnes Dans la colonne A un menu déroulant permettant de définir la lettre de la colonne de la feuille d'origine à faire correspondre avec A, B, C,D, E, F, G,........ , AX, AY, AZ,...BZ, etc..de la colonne B correspondant à la destination de la colonne dans la feuille résultat.
2- Une feuille "Source" dans laquelle je pourrais copier coller les données d'origine à réorganiser
3- Une feuille "Cible" dans laquelle les données réorganisées.
Y-a plus qu' à créer la macro maintenant:-)
Remerciements et sincères salutations.
Christophe
isabelle
bonjour Christophe,
en y ajoutant une condition pour vérifier si une valeur de la colonne A n'est pas vide et en commençant la boucle for i = 1 par for i = 2 tu pourra ajouter les titres de colonnes (Source, Cible) sur la ligne 1
Sub test1() For i = 2 To Sheets("Correspondances").Range("A65536").End(xlUp).Row If Not Sheets("Correspondances").Range("A" & i) = "" Then plg1 = Range(Sheets("Correspondances").Range("A" & i) & ":" & Sheets("Correspondances").Range("A" & i)).Address plg2 = Range(Sheets("Correspondances").Range("B" & i) & "1").Address Sheets("Source").Range(plg1).Copy Sheets("Cible").Range(plg2) End If Next End Sub
et aussi étant donnée que la feuille "Correspondances" est souvent utilisée dans la macro on peut réduire l'écriture du code en utilisant "With"
Sub test2() With Sheets("Correspondances") For i = 2 To .Range("A65536").End(xlUp).Row If Not .Range("A" & i) = "" Then plg1 = Range(.Range("A" & i) & ":" & .Range("A" & i)).Address plg2 = Range(.Range("B" & i) & "1").Address Sheets("Source").Range(plg1).Copy Sheets("Cible").Range(plg2) End If Next End With End Sub
isabelle
Le 2010-08-10 05:55, Christophe a écrit :
Isabelle:
Merci. Je suis réellement admiratif. Tout d'abord parce que tu as compris ma problématique alors que ma question était, comme souvent, pour le moins absconse et, parce que la solution que tu proposes est brillante même si je ne comprends pas tout.
J'ai bien entendu testé ta macro dans tous les cas de figure et il y a un cas ou elle ne fonctionne pas. C'est lorsque une ou plusieurs colonnes de la feuille source n'ont pas de correspondance avec une colonne de la feuille cible.
Dans le cas ci-dessous la colonne B de la feuille cible ne correspond à aucune colonne de la feuille source.
A ---------> A ---------> B B ---------> C C ---------> D
Dans ce cas, j'obtiens un Run-Time error '1004' Method Range of Object Global Fialed.
Enfin, comment modifier la macro pour ajouter un titre au colonne A et B de ma feuille "Correspondances"?
remercie et sincères salutations.
Christophe
bonjour Christophe,
en y ajoutant une condition pour vérifier si une valeur de la colonne A n'est pas vide
et en commençant la boucle for i = 1 par for i = 2 tu pourra ajouter les titres de colonnes (Source, Cible) sur la ligne 1
Sub test1()
For i = 2 To Sheets("Correspondances").Range("A65536").End(xlUp).Row
If Not Sheets("Correspondances").Range("A" & i) = "" Then
plg1 = Range(Sheets("Correspondances").Range("A" & i) & ":" & Sheets("Correspondances").Range("A" & i)).Address
plg2 = Range(Sheets("Correspondances").Range("B" & i) & "1").Address
Sheets("Source").Range(plg1).Copy Sheets("Cible").Range(plg2)
End If
Next
End Sub
et aussi étant donnée que la feuille "Correspondances" est souvent utilisée dans la macro
on peut réduire l'écriture du code en utilisant "With"
Sub test2()
With Sheets("Correspondances")
For i = 2 To .Range("A65536").End(xlUp).Row
If Not .Range("A" & i) = "" Then
plg1 = Range(.Range("A" & i) & ":" & .Range("A" & i)).Address
plg2 = Range(.Range("B" & i) & "1").Address
Sheets("Source").Range(plg1).Copy Sheets("Cible").Range(plg2)
End If
Next
End With
End Sub
isabelle
Le 2010-08-10 05:55, Christophe a écrit :
Isabelle:
Merci. Je suis réellement admiratif. Tout d'abord parce que tu as
compris ma problématique alors que ma question était, comme souvent,
pour le moins absconse et, parce que la solution que tu proposes est
brillante même si je ne comprends pas tout.
J'ai bien entendu testé ta macro dans tous les cas de figure et il y a
un cas ou elle ne fonctionne pas. C'est lorsque une ou plusieurs
colonnes de la feuille source n'ont pas de correspondance avec une
colonne de la feuille cible.
Dans le cas ci-dessous la colonne B de la feuille cible ne correspond
à aucune colonne de la feuille source.
A ---------> A
---------> B
B ---------> C
C ---------> D
Dans ce cas, j'obtiens un Run-Time error '1004' Method Range of Object
Global Fialed.
Enfin, comment modifier la macro pour ajouter un titre au colonne A
et B de ma feuille "Correspondances"?
en y ajoutant une condition pour vérifier si une valeur de la colonne A n'est pas vide et en commençant la boucle for i = 1 par for i = 2 tu pourra ajouter les titres de colonnes (Source, Cible) sur la ligne 1
Sub test1() For i = 2 To Sheets("Correspondances").Range("A65536").End(xlUp).Row If Not Sheets("Correspondances").Range("A" & i) = "" Then plg1 = Range(Sheets("Correspondances").Range("A" & i) & ":" & Sheets("Correspondances").Range("A" & i)).Address plg2 = Range(Sheets("Correspondances").Range("B" & i) & "1").Address Sheets("Source").Range(plg1).Copy Sheets("Cible").Range(plg2) End If Next End Sub
et aussi étant donnée que la feuille "Correspondances" est souvent utilisée dans la macro on peut réduire l'écriture du code en utilisant "With"
Sub test2() With Sheets("Correspondances") For i = 2 To .Range("A65536").End(xlUp).Row If Not .Range("A" & i) = "" Then plg1 = Range(.Range("A" & i) & ":" & .Range("A" & i)).Address plg2 = Range(.Range("B" & i) & "1").Address Sheets("Source").Range(plg1).Copy Sheets("Cible").Range(plg2) End If Next End With End Sub
isabelle
Le 2010-08-10 05:55, Christophe a écrit :
Isabelle:
Merci. Je suis réellement admiratif. Tout d'abord parce que tu as compris ma problématique alors que ma question était, comme souvent, pour le moins absconse et, parce que la solution que tu proposes est brillante même si je ne comprends pas tout.
J'ai bien entendu testé ta macro dans tous les cas de figure et il y a un cas ou elle ne fonctionne pas. C'est lorsque une ou plusieurs colonnes de la feuille source n'ont pas de correspondance avec une colonne de la feuille cible.
Dans le cas ci-dessous la colonne B de la feuille cible ne correspond à aucune colonne de la feuille source.
A ---------> A ---------> B B ---------> C C ---------> D
Dans ce cas, j'obtiens un Run-Time error '1004' Method Range of Object Global Fialed.
Enfin, comment modifier la macro pour ajouter un titre au colonne A et B de ma feuille "Correspondances"?