Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6 colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3 premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les informations
qui sont de même nature dans les 3 premières colonnes et créer autant de
colonnes qu'il y a de lignes différentes. Suis-je suffisamment explicite ?
J'ai bien commencé "à la main", mais celà devient vite lassant avec des
centaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas et me
proposeront une solution.
@+
Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6 colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3 premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les informations
qui sont de même nature dans les 3 premières colonnes et créer autant de
colonnes qu'il y a de lignes différentes. Suis-je suffisamment explicite ?
J'ai bien commencé "à la main", mais celà devient vite lassant avec des
centaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas et me
proposeront une solution.
@+
Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6 colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3 premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les informations
qui sont de même nature dans les 3 premières colonnes et créer autant de
colonnes qu'il y a de lignes différentes. Suis-je suffisamment explicite ?
J'ai bien commencé "à la main", mais celà devient vite lassant avec des
centaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas et me
proposeront une solution.
@+
-> Je souhaiterais pouvoir regrouper sur une seule ligne les informations
qui sont de même nature dans les 3 premières colonnes et créer autant de
colonnes qu'il y a de lignes différentes.
Cette partie aurait besoin de plus d'explications...
Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6 colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3 premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les informations
qui sont de même nature dans les 3 premières colonnes et créer autant de
colonnes qu'il y a de lignes différentes. Suis-je suffisamment explicite ?
J'ai bien commencé "à la main", mais celà devient vite lassant avec des
centaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas et
me
proposeront une solution.
@+
-> Je souhaiterais pouvoir regrouper sur une seule ligne les informations
qui sont de même nature dans les 3 premières colonnes et créer autant de
colonnes qu'il y a de lignes différentes.
Cette partie aurait besoin de plus d'explications...
Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6 colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3 premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les informations
qui sont de même nature dans les 3 premières colonnes et créer autant de
colonnes qu'il y a de lignes différentes. Suis-je suffisamment explicite ?
J'ai bien commencé "à la main", mais celà devient vite lassant avec des
centaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas et
me
proposeront une solution.
@+
-> Je souhaiterais pouvoir regrouper sur une seule ligne les informations
qui sont de même nature dans les 3 premières colonnes et créer autant de
colonnes qu'il y a de lignes différentes.
Cette partie aurait besoin de plus d'explications...
Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6 colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3 premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les informations
qui sont de même nature dans les 3 premières colonnes et créer autant de
colonnes qu'il y a de lignes différentes. Suis-je suffisamment explicite ?
J'ai bien commencé "à la main", mais celà devient vite lassant avec des
centaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas et
me
proposeront une solution.
@+
Salut,-> Je souhaiterais pouvoir regrouper sur une seule ligne les informations
qui sont de même nature dans les 3 premières colonnes et créer autant de
colonnes qu'il y a de lignes différentes.
Cette partie aurait besoin de plus d'explications...
Qu'est-ce que tu entends par "créer autant de colonnes..."
Qu'est-ce que tu veux y mettre et de quelle manière veux-tu l'y mettre ?
La façon dont je procéderais serait comme ceci
Trier les 6 colonnes par A, B et C
À ce moment toutes les lignes qui commencent par les 3 mêmes valeurs
seront
collées.
Il s'agirait maintenant de boucler le tout.
For I = Début to Fin
If Range("A" & I) = Range("A" & I + 1) and Range("B" &I) = Range("B" &
I+1) and Range(Range("C") = Range("C" & I + 1) then
' 3 premières valeurs identiques
' faire ce qu'il faut
End If
Next
Michel
"Apprenti.xls" a écrit dans le message de
news:%Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6 colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3 premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les informations
qui sont de même nature dans les 3 premières colonnes et créer autant de
colonnes qu'il y a de lignes différentes. Suis-je suffisamment explicite
?
J'ai bien commencé "à la main", mais celà devient vite lassant avec des
centaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas et
meproposeront une solution.
@+
Salut,
-> Je souhaiterais pouvoir regrouper sur une seule ligne les informations
qui sont de même nature dans les 3 premières colonnes et créer autant de
colonnes qu'il y a de lignes différentes.
Cette partie aurait besoin de plus d'explications...
Qu'est-ce que tu entends par "créer autant de colonnes..."
Qu'est-ce que tu veux y mettre et de quelle manière veux-tu l'y mettre ?
La façon dont je procéderais serait comme ceci
Trier les 6 colonnes par A, B et C
À ce moment toutes les lignes qui commencent par les 3 mêmes valeurs
seront
collées.
Il s'agirait maintenant de boucler le tout.
For I = Début to Fin
If Range("A" & I) = Range("A" & I + 1) and Range("B" &I) = Range("B" &
I+1) and Range(Range("C") = Range("C" & I + 1) then
' 3 premières valeurs identiques
' faire ce qu'il faut
End If
Next
Michel
"Apprenti.xls" <apprenti.xls@voila.fr> a écrit dans le message de
news:%23nIfodVpFHA.420@TK2MSFTNGP09.phx.gbl...
Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6 colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3 premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les informations
qui sont de même nature dans les 3 premières colonnes et créer autant de
colonnes qu'il y a de lignes différentes. Suis-je suffisamment explicite
?
J'ai bien commencé "à la main", mais celà devient vite lassant avec des
centaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas et
me
proposeront une solution.
@+
Salut,-> Je souhaiterais pouvoir regrouper sur une seule ligne les informations
qui sont de même nature dans les 3 premières colonnes et créer autant de
colonnes qu'il y a de lignes différentes.
Cette partie aurait besoin de plus d'explications...
Qu'est-ce que tu entends par "créer autant de colonnes..."
Qu'est-ce que tu veux y mettre et de quelle manière veux-tu l'y mettre ?
La façon dont je procéderais serait comme ceci
Trier les 6 colonnes par A, B et C
À ce moment toutes les lignes qui commencent par les 3 mêmes valeurs
seront
collées.
Il s'agirait maintenant de boucler le tout.
For I = Début to Fin
If Range("A" & I) = Range("A" & I + 1) and Range("B" &I) = Range("B" &
I+1) and Range(Range("C") = Range("C" & I + 1) then
' 3 premières valeurs identiques
' faire ce qu'il faut
End If
Next
Michel
"Apprenti.xls" a écrit dans le message de
news:%Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6 colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3 premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les informations
qui sont de même nature dans les 3 premières colonnes et créer autant de
colonnes qu'il y a de lignes différentes. Suis-je suffisamment explicite
?
J'ai bien commencé "à la main", mais celà devient vite lassant avec des
centaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas et
meproposeront une solution.
@+
Salut,
J'ai pas très bien compris : si tu veux regrouper en une ligne les données
de trois colonnes, il faut que chaque cellule de la ligne (du tableau
final) contienne les données de trois colonnes (par exemple de A8, B8 et
C8). Veux-tu concaténer les données ?
Si tu préfères regrouper tes donnée en trois lignes (c'est à mon avis le
plus simple), plusieurs solutions sont possibles :
Sélectionne ton tableau (ligne de titres comprise) et applique un filtre
élaboré avec une Zone de critères vide, en copiant dans un autre endroit
de la feuille et en cochant Extraction sans doublons.
Il reste alors à transposer ton tableau. Pour cela, copie-le et fais un
collage Spécial en cochant la case Transposé.
Autre solution si les données doivent être mises à jour régulièrement :
passer par un tableau croisé dynamique (TCD).
Sélectionne le tableau et clique sur DonnéesRapport de TCD, puis sur le
bouton Terminer. Déplace les étiquettes de tes trois premières colonnes en
champs de colonne. Tes données doivent alors s'afficher à cet endroit sans
doublons. Il reste des colonnes Total à enlever : clic droit sur l'une
d'entre elles, Paramètres de champ et coche la case Aucun.
Pour mettre à jour le tableau, il suffit alors de cliquer sur le bouton
Actualiser (le point d'exclamation rouge) de la barre d'outils TCD.
A+
Nicolas B.Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6 colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3 premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les informations
qui sont de même nature dans les 3 premières colonnes et créer autant de
colonnes qu'il y a de lignes différentes. Suis-je suffisamment explicite
? J'ai bien commencé "à la main", mais celà devient vite lassant avec des
centaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas et
me proposeront une solution.
@+
Salut,
J'ai pas très bien compris : si tu veux regrouper en une ligne les données
de trois colonnes, il faut que chaque cellule de la ligne (du tableau
final) contienne les données de trois colonnes (par exemple de A8, B8 et
C8). Veux-tu concaténer les données ?
Si tu préfères regrouper tes donnée en trois lignes (c'est à mon avis le
plus simple), plusieurs solutions sont possibles :
Sélectionne ton tableau (ligne de titres comprise) et applique un filtre
élaboré avec une Zone de critères vide, en copiant dans un autre endroit
de la feuille et en cochant Extraction sans doublons.
Il reste alors à transposer ton tableau. Pour cela, copie-le et fais un
collage Spécial en cochant la case Transposé.
Autre solution si les données doivent être mises à jour régulièrement :
passer par un tableau croisé dynamique (TCD).
Sélectionne le tableau et clique sur DonnéesRapport de TCD, puis sur le
bouton Terminer. Déplace les étiquettes de tes trois premières colonnes en
champs de colonne. Tes données doivent alors s'afficher à cet endroit sans
doublons. Il reste des colonnes Total à enlever : clic droit sur l'une
d'entre elles, Paramètres de champ et coche la case Aucun.
Pour mettre à jour le tableau, il suffit alors de cliquer sur le bouton
Actualiser (le point d'exclamation rouge) de la barre d'outils TCD.
A+
Nicolas B.
Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6 colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3 premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les informations
qui sont de même nature dans les 3 premières colonnes et créer autant de
colonnes qu'il y a de lignes différentes. Suis-je suffisamment explicite
? J'ai bien commencé "à la main", mais celà devient vite lassant avec des
centaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas et
me proposeront une solution.
@+
Salut,
J'ai pas très bien compris : si tu veux regrouper en une ligne les données
de trois colonnes, il faut que chaque cellule de la ligne (du tableau
final) contienne les données de trois colonnes (par exemple de A8, B8 et
C8). Veux-tu concaténer les données ?
Si tu préfères regrouper tes donnée en trois lignes (c'est à mon avis le
plus simple), plusieurs solutions sont possibles :
Sélectionne ton tableau (ligne de titres comprise) et applique un filtre
élaboré avec une Zone de critères vide, en copiant dans un autre endroit
de la feuille et en cochant Extraction sans doublons.
Il reste alors à transposer ton tableau. Pour cela, copie-le et fais un
collage Spécial en cochant la case Transposé.
Autre solution si les données doivent être mises à jour régulièrement :
passer par un tableau croisé dynamique (TCD).
Sélectionne le tableau et clique sur DonnéesRapport de TCD, puis sur le
bouton Terminer. Déplace les étiquettes de tes trois premières colonnes en
champs de colonne. Tes données doivent alors s'afficher à cet endroit sans
doublons. Il reste des colonnes Total à enlever : clic droit sur l'une
d'entre elles, Paramètres de champ et coche la case Aucun.
Pour mettre à jour le tableau, il suffit alors de cliquer sur le bouton
Actualiser (le point d'exclamation rouge) de la barre d'outils TCD.
A+
Nicolas B.Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6 colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3 premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les informations
qui sont de même nature dans les 3 premières colonnes et créer autant de
colonnes qu'il y a de lignes différentes. Suis-je suffisamment explicite
? J'ai bien commencé "à la main", mais celà devient vite lassant avec des
centaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas et
me proposeront une solution.
@+
Bonjour Nicolas,
Je réécris ce que j'ai répondu à Michel qui s'est aussi penché sur mon
problème, car mon énoncé n'était franchement pas explicite ...
[...]Rien ne vaut un exemple.
Supposons une liste d'enfants avec le nom des parents dans les premières
colonnes.
ID Parent | Nom Parent | Prénom Parent | ID Enfant | Nom Enfant | Prénom
Enfant |
Un parent peut avoir un ou plusieurs enfants.
La liste comprend tous les enfants
Mon souhait : regrouper sur une même ligne tous les enfants d'un même
parent
en autant de colonnes qu'il y a d'enfants. Ce qui donnerait ceci par
exemple
:
ID Parent | Nom Parent | Prénom Parent | ID 1er Enfant | Nom 1er Enfant |
Prénom 1er Enfant | ID 2ème Enfant | Nom 2ème Enfant | Prénom 2ème Enfant
|
ID 3ème Enfant | Nom 3ème Enfant | Prénom 3ème Enfant | ID 4ème Enfant |
Nom
4ème Enfant | Prénom 4ème Enfant |
Le nombre de colonne étant limité à 256, pour mon cas, je n'ai que 9
"enfants" avec 3 colonnes qui leur sont propres.
J'espère avoir été un peu plus clair. [...]
Merci Nicolas pour tes propositions, mais comme je me suis mal exprimé,
elles ne répondent pas au résultat escompté.
@+
"Nicolas B." a écrit dans le message
de news:Salut,
J'ai pas très bien compris : si tu veux regrouper en une ligne les
données
de trois colonnes, il faut que chaque cellule de la ligne (du tableau
final) contienne les données de trois colonnes (par exemple de A8, B8 et
C8). Veux-tu concaténer les données ?
Si tu préfères regrouper tes donnée en trois lignes (c'est à mon avis le
plus simple), plusieurs solutions sont possibles :
Sélectionne ton tableau (ligne de titres comprise) et applique un filtre
élaboré avec une Zone de critères vide, en copiant dans un autre endroit
de la feuille et en cochant Extraction sans doublons.
Il reste alors à transposer ton tableau. Pour cela, copie-le et fais un
collage Spécial en cochant la case Transposé.
Autre solution si les données doivent être mises à jour régulièrement :
passer par un tableau croisé dynamique (TCD).
Sélectionne le tableau et clique sur DonnéesRapport de TCD, puis sur le
bouton Terminer. Déplace les étiquettes de tes trois premières colonnes
en
champs de colonne. Tes données doivent alors s'afficher à cet endroit
sans
doublons. Il reste des colonnes Total à enlever : clic droit sur l'une
d'entre elles, Paramètres de champ et coche la case Aucun.
Pour mettre à jour le tableau, il suffit alors de cliquer sur le bouton
Actualiser (le point d'exclamation rouge) de la barre d'outils TCD.
A+
Nicolas B.Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6 colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3 premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les
informations
qui sont de même nature dans les 3 premières colonnes et créer autant
de
colonnes qu'il y a de lignes différentes. Suis-je suffisamment
explicite
? J'ai bien commencé "à la main", mais celà devient vite lassant avec
des
centaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas
et
me proposeront une solution.
@+
Bonjour Nicolas,
Je réécris ce que j'ai répondu à Michel qui s'est aussi penché sur mon
problème, car mon énoncé n'était franchement pas explicite ...
[...]Rien ne vaut un exemple.
Supposons une liste d'enfants avec le nom des parents dans les premières
colonnes.
ID Parent | Nom Parent | Prénom Parent | ID Enfant | Nom Enfant | Prénom
Enfant |
Un parent peut avoir un ou plusieurs enfants.
La liste comprend tous les enfants
Mon souhait : regrouper sur une même ligne tous les enfants d'un même
parent
en autant de colonnes qu'il y a d'enfants. Ce qui donnerait ceci par
exemple
:
ID Parent | Nom Parent | Prénom Parent | ID 1er Enfant | Nom 1er Enfant |
Prénom 1er Enfant | ID 2ème Enfant | Nom 2ème Enfant | Prénom 2ème Enfant
|
ID 3ème Enfant | Nom 3ème Enfant | Prénom 3ème Enfant | ID 4ème Enfant |
Nom
4ème Enfant | Prénom 4ème Enfant |
Le nombre de colonne étant limité à 256, pour mon cas, je n'ai que 9
"enfants" avec 3 colonnes qui leur sont propres.
J'espère avoir été un peu plus clair. [...]
Merci Nicolas pour tes propositions, mais comme je me suis mal exprimé,
elles ne répondent pas au résultat escompté.
@+
"Nicolas B." <nicolas.bruot@adresse.bidon.invalid> a écrit dans le message
de news: eqbr7tVpFHA.2976@TK2MSFTNGP12.phx.gbl...
Salut,
J'ai pas très bien compris : si tu veux regrouper en une ligne les
données
de trois colonnes, il faut que chaque cellule de la ligne (du tableau
final) contienne les données de trois colonnes (par exemple de A8, B8 et
C8). Veux-tu concaténer les données ?
Si tu préfères regrouper tes donnée en trois lignes (c'est à mon avis le
plus simple), plusieurs solutions sont possibles :
Sélectionne ton tableau (ligne de titres comprise) et applique un filtre
élaboré avec une Zone de critères vide, en copiant dans un autre endroit
de la feuille et en cochant Extraction sans doublons.
Il reste alors à transposer ton tableau. Pour cela, copie-le et fais un
collage Spécial en cochant la case Transposé.
Autre solution si les données doivent être mises à jour régulièrement :
passer par un tableau croisé dynamique (TCD).
Sélectionne le tableau et clique sur DonnéesRapport de TCD, puis sur le
bouton Terminer. Déplace les étiquettes de tes trois premières colonnes
en
champs de colonne. Tes données doivent alors s'afficher à cet endroit
sans
doublons. Il reste des colonnes Total à enlever : clic droit sur l'une
d'entre elles, Paramètres de champ et coche la case Aucun.
Pour mettre à jour le tableau, il suffit alors de cliquer sur le bouton
Actualiser (le point d'exclamation rouge) de la barre d'outils TCD.
A+
Nicolas B.
Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6 colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3 premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les
informations
qui sont de même nature dans les 3 premières colonnes et créer autant
de
colonnes qu'il y a de lignes différentes. Suis-je suffisamment
explicite
? J'ai bien commencé "à la main", mais celà devient vite lassant avec
des
centaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas
et
me proposeront une solution.
@+
Bonjour Nicolas,
Je réécris ce que j'ai répondu à Michel qui s'est aussi penché sur mon
problème, car mon énoncé n'était franchement pas explicite ...
[...]Rien ne vaut un exemple.
Supposons une liste d'enfants avec le nom des parents dans les premières
colonnes.
ID Parent | Nom Parent | Prénom Parent | ID Enfant | Nom Enfant | Prénom
Enfant |
Un parent peut avoir un ou plusieurs enfants.
La liste comprend tous les enfants
Mon souhait : regrouper sur une même ligne tous les enfants d'un même
parent
en autant de colonnes qu'il y a d'enfants. Ce qui donnerait ceci par
exemple
:
ID Parent | Nom Parent | Prénom Parent | ID 1er Enfant | Nom 1er Enfant |
Prénom 1er Enfant | ID 2ème Enfant | Nom 2ème Enfant | Prénom 2ème Enfant
|
ID 3ème Enfant | Nom 3ème Enfant | Prénom 3ème Enfant | ID 4ème Enfant |
Nom
4ème Enfant | Prénom 4ème Enfant |
Le nombre de colonne étant limité à 256, pour mon cas, je n'ai que 9
"enfants" avec 3 colonnes qui leur sont propres.
J'espère avoir été un peu plus clair. [...]
Merci Nicolas pour tes propositions, mais comme je me suis mal exprimé,
elles ne répondent pas au résultat escompté.
@+
"Nicolas B." a écrit dans le message
de news:Salut,
J'ai pas très bien compris : si tu veux regrouper en une ligne les
données
de trois colonnes, il faut que chaque cellule de la ligne (du tableau
final) contienne les données de trois colonnes (par exemple de A8, B8 et
C8). Veux-tu concaténer les données ?
Si tu préfères regrouper tes donnée en trois lignes (c'est à mon avis le
plus simple), plusieurs solutions sont possibles :
Sélectionne ton tableau (ligne de titres comprise) et applique un filtre
élaboré avec une Zone de critères vide, en copiant dans un autre endroit
de la feuille et en cochant Extraction sans doublons.
Il reste alors à transposer ton tableau. Pour cela, copie-le et fais un
collage Spécial en cochant la case Transposé.
Autre solution si les données doivent être mises à jour régulièrement :
passer par un tableau croisé dynamique (TCD).
Sélectionne le tableau et clique sur DonnéesRapport de TCD, puis sur le
bouton Terminer. Déplace les étiquettes de tes trois premières colonnes
en
champs de colonne. Tes données doivent alors s'afficher à cet endroit
sans
doublons. Il reste des colonnes Total à enlever : clic droit sur l'une
d'entre elles, Paramètres de champ et coche la case Aucun.
Pour mettre à jour le tableau, il suffit alors de cliquer sur le bouton
Actualiser (le point d'exclamation rouge) de la barre d'outils TCD.
A+
Nicolas B.Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6 colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3 premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les
informations
qui sont de même nature dans les 3 premières colonnes et créer autant
de
colonnes qu'il y a de lignes différentes. Suis-je suffisamment
explicite
? J'ai bien commencé "à la main", mais celà devient vite lassant avec
des
centaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas
et
me proposeront une solution.
@+
Salut,
La réponse citée n'est jamais apparue sur Outlook Express... c'est un peu
emm....
Ceci pourrait être une façon de procéder
Sub MaMacro()
Dim I As Integer
Dim Colonne As Integer
On Error GoTo Erreur
For I = 1 To 10 'Scanner toutes les lignes
If Range("A" & I) = Range("A" & I + 1) And _
Range("B" & I) = Range("B" & I + 1) And _
Range("C" & I) = Range("C" & I + 1) And _
Range("A" & I) <> "" Then
'Définir la dernière colonne pour y entrer les données
Colonne = Range("A" & I & ":IV" & I).Find("*", Range("A" & I),
,
, xlByColumns, xlPrevious).Column
Range("A" & I).Offset(0, Colonne) = Range("D" & I + 1)
Range("A" & I).Offset(0, Colonne + 1) = Range("E" & I + 1)
Range("A" & I).Offset(0, Colonne + 2) = Range("F" & I + 1)
'Effacer la colonne copié
Rows(I + 1).Delete
'Comme on part d'en haut, il faut décrémenter la variable I
'Sinon, il faudrait partir de la fin et remonter
I = I - 1
End If
Next
Exit Sub
Erreur:
MsgBox Err.Description
End Sub
Michel
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message
de news:eN$Bonjour Nicolas,
Je réécris ce que j'ai répondu à Michel qui s'est aussi penché sur mon
problème, car mon énoncé n'était franchement pas explicite ...
[...]Rien ne vaut un exemple.
Supposons une liste d'enfants avec le nom des parents dans les premières
colonnes.
ID Parent | Nom Parent | Prénom Parent | ID Enfant | Nom Enfant | Prénom
Enfant |
Un parent peut avoir un ou plusieurs enfants.
La liste comprend tous les enfants
Mon souhait : regrouper sur une même ligne tous les enfants d'un même
parenten autant de colonnes qu'il y a d'enfants. Ce qui donnerait ceci par
exemple:
ID Parent | Nom Parent | Prénom Parent | ID 1er Enfant | Nom 1er Enfant |
Prénom 1er Enfant | ID 2ème Enfant | Nom 2ème Enfant | Prénom 2ème Enfant
|ID 3ème Enfant | Nom 3ème Enfant | Prénom 3ème Enfant | ID 4ème Enfant |
Nom4ème Enfant | Prénom 4ème Enfant |
Le nombre de colonne étant limité à 256, pour mon cas, je n'ai que 9
"enfants" avec 3 colonnes qui leur sont propres.
J'espère avoir été un peu plus clair. [...]
Merci Nicolas pour tes propositions, mais comme je me suis mal exprimé,
elles ne répondent pas au résultat escompté.
@+
"Nicolas B." a écrit dans le
message
de news:Salut,
J'ai pas très bien compris : si tu veux regrouper en une ligne les
donnéesde trois colonnes, il faut que chaque cellule de la ligne (du tableau
final) contienne les données de trois colonnes (par exemple de A8, B8
et
C8). Veux-tu concaténer les données ?
Si tu préfères regrouper tes donnée en trois lignes (c'est à mon avis
le
plus simple), plusieurs solutions sont possibles :
Sélectionne ton tableau (ligne de titres comprise) et applique un
filtre
élaboré avec une Zone de critères vide, en copiant dans un autre
endroit
de la feuille et en cochant Extraction sans doublons.
Il reste alors à transposer ton tableau. Pour cela, copie-le et fais un
collage Spécial en cochant la case Transposé.
Autre solution si les données doivent être mises à jour régulièrement :
passer par un tableau croisé dynamique (TCD).
Sélectionne le tableau et clique sur DonnéesRapport de TCD, puis sur
le
bouton Terminer. Déplace les étiquettes de tes trois premières colonnes
enchamps de colonne. Tes données doivent alors s'afficher à cet endroit
sansdoublons. Il reste des colonnes Total à enlever : clic droit sur l'une
d'entre elles, Paramètres de champ et coche la case Aucun.
Pour mettre à jour le tableau, il suffit alors de cliquer sur le bouton
Actualiser (le point d'exclamation rouge) de la barre d'outils TCD.
A+
Nicolas B.Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6
colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3 premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les
informationsqui sont de même nature dans les 3 premières colonnes et créer autant
decolonnes qu'il y a de lignes différentes. Suis-je suffisamment
explicite? J'ai bien commencé "à la main", mais celà devient vite lassant avec
descentaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas
etme proposeront une solution.
@+
Salut,
La réponse citée n'est jamais apparue sur Outlook Express... c'est un peu
emm....
Ceci pourrait être une façon de procéder
Sub MaMacro()
Dim I As Integer
Dim Colonne As Integer
On Error GoTo Erreur
For I = 1 To 10 'Scanner toutes les lignes
If Range("A" & I) = Range("A" & I + 1) And _
Range("B" & I) = Range("B" & I + 1) And _
Range("C" & I) = Range("C" & I + 1) And _
Range("A" & I) <> "" Then
'Définir la dernière colonne pour y entrer les données
Colonne = Range("A" & I & ":IV" & I).Find("*", Range("A" & I),
,
, xlByColumns, xlPrevious).Column
Range("A" & I).Offset(0, Colonne) = Range("D" & I + 1)
Range("A" & I).Offset(0, Colonne + 1) = Range("E" & I + 1)
Range("A" & I).Offset(0, Colonne + 2) = Range("F" & I + 1)
'Effacer la colonne copié
Rows(I + 1).Delete
'Comme on part d'en haut, il faut décrémenter la variable I
'Sinon, il faudrait partir de la fin et remonter
I = I - 1
End If
Next
Exit Sub
Erreur:
MsgBox Err.Description
End Sub
Michel
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message
de news:eN$5QQipFHA.2472@tk2msftngp13.phx.gbl...
Bonjour Nicolas,
Je réécris ce que j'ai répondu à Michel qui s'est aussi penché sur mon
problème, car mon énoncé n'était franchement pas explicite ...
[...]Rien ne vaut un exemple.
Supposons une liste d'enfants avec le nom des parents dans les premières
colonnes.
ID Parent | Nom Parent | Prénom Parent | ID Enfant | Nom Enfant | Prénom
Enfant |
Un parent peut avoir un ou plusieurs enfants.
La liste comprend tous les enfants
Mon souhait : regrouper sur une même ligne tous les enfants d'un même
parent
en autant de colonnes qu'il y a d'enfants. Ce qui donnerait ceci par
exemple
:
ID Parent | Nom Parent | Prénom Parent | ID 1er Enfant | Nom 1er Enfant |
Prénom 1er Enfant | ID 2ème Enfant | Nom 2ème Enfant | Prénom 2ème Enfant
|
ID 3ème Enfant | Nom 3ème Enfant | Prénom 3ème Enfant | ID 4ème Enfant |
Nom
4ème Enfant | Prénom 4ème Enfant |
Le nombre de colonne étant limité à 256, pour mon cas, je n'ai que 9
"enfants" avec 3 colonnes qui leur sont propres.
J'espère avoir été un peu plus clair. [...]
Merci Nicolas pour tes propositions, mais comme je me suis mal exprimé,
elles ne répondent pas au résultat escompté.
@+
"Nicolas B." <nicolas.bruot@adresse.bidon.invalid> a écrit dans le
message
de news: eqbr7tVpFHA.2976@TK2MSFTNGP12.phx.gbl...
Salut,
J'ai pas très bien compris : si tu veux regrouper en une ligne les
données
de trois colonnes, il faut que chaque cellule de la ligne (du tableau
final) contienne les données de trois colonnes (par exemple de A8, B8
et
C8). Veux-tu concaténer les données ?
Si tu préfères regrouper tes donnée en trois lignes (c'est à mon avis
le
plus simple), plusieurs solutions sont possibles :
Sélectionne ton tableau (ligne de titres comprise) et applique un
filtre
élaboré avec une Zone de critères vide, en copiant dans un autre
endroit
de la feuille et en cochant Extraction sans doublons.
Il reste alors à transposer ton tableau. Pour cela, copie-le et fais un
collage Spécial en cochant la case Transposé.
Autre solution si les données doivent être mises à jour régulièrement :
passer par un tableau croisé dynamique (TCD).
Sélectionne le tableau et clique sur DonnéesRapport de TCD, puis sur
le
bouton Terminer. Déplace les étiquettes de tes trois premières colonnes
en
champs de colonne. Tes données doivent alors s'afficher à cet endroit
sans
doublons. Il reste des colonnes Total à enlever : clic droit sur l'une
d'entre elles, Paramètres de champ et coche la case Aucun.
Pour mettre à jour le tableau, il suffit alors de cliquer sur le bouton
Actualiser (le point d'exclamation rouge) de la barre d'outils TCD.
A+
Nicolas B.
Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6
colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3 premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les
informations
qui sont de même nature dans les 3 premières colonnes et créer autant
de
colonnes qu'il y a de lignes différentes. Suis-je suffisamment
explicite
? J'ai bien commencé "à la main", mais celà devient vite lassant avec
des
centaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas
et
me proposeront une solution.
@+
Salut,
La réponse citée n'est jamais apparue sur Outlook Express... c'est un peu
emm....
Ceci pourrait être une façon de procéder
Sub MaMacro()
Dim I As Integer
Dim Colonne As Integer
On Error GoTo Erreur
For I = 1 To 10 'Scanner toutes les lignes
If Range("A" & I) = Range("A" & I + 1) And _
Range("B" & I) = Range("B" & I + 1) And _
Range("C" & I) = Range("C" & I + 1) And _
Range("A" & I) <> "" Then
'Définir la dernière colonne pour y entrer les données
Colonne = Range("A" & I & ":IV" & I).Find("*", Range("A" & I),
,
, xlByColumns, xlPrevious).Column
Range("A" & I).Offset(0, Colonne) = Range("D" & I + 1)
Range("A" & I).Offset(0, Colonne + 1) = Range("E" & I + 1)
Range("A" & I).Offset(0, Colonne + 2) = Range("F" & I + 1)
'Effacer la colonne copié
Rows(I + 1).Delete
'Comme on part d'en haut, il faut décrémenter la variable I
'Sinon, il faudrait partir de la fin et remonter
I = I - 1
End If
Next
Exit Sub
Erreur:
MsgBox Err.Description
End Sub
Michel
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message
de news:eN$Bonjour Nicolas,
Je réécris ce que j'ai répondu à Michel qui s'est aussi penché sur mon
problème, car mon énoncé n'était franchement pas explicite ...
[...]Rien ne vaut un exemple.
Supposons une liste d'enfants avec le nom des parents dans les premières
colonnes.
ID Parent | Nom Parent | Prénom Parent | ID Enfant | Nom Enfant | Prénom
Enfant |
Un parent peut avoir un ou plusieurs enfants.
La liste comprend tous les enfants
Mon souhait : regrouper sur une même ligne tous les enfants d'un même
parenten autant de colonnes qu'il y a d'enfants. Ce qui donnerait ceci par
exemple:
ID Parent | Nom Parent | Prénom Parent | ID 1er Enfant | Nom 1er Enfant |
Prénom 1er Enfant | ID 2ème Enfant | Nom 2ème Enfant | Prénom 2ème Enfant
|ID 3ème Enfant | Nom 3ème Enfant | Prénom 3ème Enfant | ID 4ème Enfant |
Nom4ème Enfant | Prénom 4ème Enfant |
Le nombre de colonne étant limité à 256, pour mon cas, je n'ai que 9
"enfants" avec 3 colonnes qui leur sont propres.
J'espère avoir été un peu plus clair. [...]
Merci Nicolas pour tes propositions, mais comme je me suis mal exprimé,
elles ne répondent pas au résultat escompté.
@+
"Nicolas B." a écrit dans le
message
de news:Salut,
J'ai pas très bien compris : si tu veux regrouper en une ligne les
donnéesde trois colonnes, il faut que chaque cellule de la ligne (du tableau
final) contienne les données de trois colonnes (par exemple de A8, B8
et
C8). Veux-tu concaténer les données ?
Si tu préfères regrouper tes donnée en trois lignes (c'est à mon avis
le
plus simple), plusieurs solutions sont possibles :
Sélectionne ton tableau (ligne de titres comprise) et applique un
filtre
élaboré avec une Zone de critères vide, en copiant dans un autre
endroit
de la feuille et en cochant Extraction sans doublons.
Il reste alors à transposer ton tableau. Pour cela, copie-le et fais un
collage Spécial en cochant la case Transposé.
Autre solution si les données doivent être mises à jour régulièrement :
passer par un tableau croisé dynamique (TCD).
Sélectionne le tableau et clique sur DonnéesRapport de TCD, puis sur
le
bouton Terminer. Déplace les étiquettes de tes trois premières colonnes
enchamps de colonne. Tes données doivent alors s'afficher à cet endroit
sansdoublons. Il reste des colonnes Total à enlever : clic droit sur l'une
d'entre elles, Paramètres de champ et coche la case Aucun.
Pour mettre à jour le tableau, il suffit alors de cliquer sur le bouton
Actualiser (le point d'exclamation rouge) de la barre d'outils TCD.
A+
Nicolas B.Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6
colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3 premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les
informationsqui sont de même nature dans les 3 premières colonnes et créer autant
decolonnes qu'il y a de lignes différentes. Suis-je suffisamment
explicite? J'ai bien commencé "à la main", mais celà devient vite lassant avec
descentaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas
etme proposeront une solution.
@+
Merci Michel !
Je ne prends pas encore le temps de tester pour te remercier vivement
d'ores et déjà.
@+.
"MPi" a écrit dans le message de news:
fghOe.30706$Salut,
La réponse citée n'est jamais apparue sur Outlook Express... c'est un peu
emm....
Ceci pourrait être une façon de procéder
Sub MaMacro()
Dim I As Integer
Dim Colonne As Integer
On Error GoTo Erreur
For I = 1 To 10 'Scanner toutes les lignes
If Range("A" & I) = Range("A" & I + 1) And _
Range("B" & I) = Range("B" & I + 1) And _
Range("C" & I) = Range("C" & I + 1) And _
Range("A" & I) <> "" Then
'Définir la dernière colonne pour y entrer les données
Colonne = Range("A" & I & ":IV" & I).Find("*", Range("A" & I),
,
, xlByColumns, xlPrevious).Column
Range("A" & I).Offset(0, Colonne) = Range("D" & I + 1)
Range("A" & I).Offset(0, Colonne + 1) = Range("E" & I + 1)
Range("A" & I).Offset(0, Colonne + 2) = Range("F" & I + 1)
'Effacer la colonne copié
Rows(I + 1).Delete
'Comme on part d'en haut, il faut décrémenter la variable I
'Sinon, il faudrait partir de la fin et remonter
I = I - 1
End If
Next
Exit Sub
Erreur:
MsgBox Err.Description
End Sub
Michel
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message
de news:eN$Bonjour Nicolas,
Je réécris ce que j'ai répondu à Michel qui s'est aussi penché sur mon
problème, car mon énoncé n'était franchement pas explicite ...
[...]Rien ne vaut un exemple.
Supposons une liste d'enfants avec le nom des parents dans les premières
colonnes.
ID Parent | Nom Parent | Prénom Parent | ID Enfant | Nom Enfant | Prénom
Enfant |
Un parent peut avoir un ou plusieurs enfants.
La liste comprend tous les enfants
Mon souhait : regrouper sur une même ligne tous les enfants d'un même
parenten autant de colonnes qu'il y a d'enfants. Ce qui donnerait ceci par
exemple:
ID Parent | Nom Parent | Prénom Parent | ID 1er Enfant | Nom 1er Enfant
|
Prénom 1er Enfant | ID 2ème Enfant | Nom 2ème Enfant | Prénom 2ème
Enfant
|ID 3ème Enfant | Nom 3ème Enfant | Prénom 3ème Enfant | ID 4ème Enfant |
Nom4ème Enfant | Prénom 4ème Enfant |
Le nombre de colonne étant limité à 256, pour mon cas, je n'ai que 9
"enfants" avec 3 colonnes qui leur sont propres.
J'espère avoir été un peu plus clair. [...]
Merci Nicolas pour tes propositions, mais comme je me suis mal exprimé,
elles ne répondent pas au résultat escompté.
@+
"Nicolas B." a écrit dans le
message
de news:Salut,
J'ai pas très bien compris : si tu veux regrouper en une ligne les
donnéesde trois colonnes, il faut que chaque cellule de la ligne (du tableau
final) contienne les données de trois colonnes (par exemple de A8, B8
et
C8). Veux-tu concaténer les données ?
Si tu préfères regrouper tes donnée en trois lignes (c'est à mon avis
le
plus simple), plusieurs solutions sont possibles :
Sélectionne ton tableau (ligne de titres comprise) et applique un
filtre
élaboré avec une Zone de critères vide, en copiant dans un autre
endroit
de la feuille et en cochant Extraction sans doublons.
Il reste alors à transposer ton tableau. Pour cela, copie-le et fais
un
collage Spécial en cochant la case Transposé.
Autre solution si les données doivent être mises à jour régulièrement
:
passer par un tableau croisé dynamique (TCD).
Sélectionne le tableau et clique sur DonnéesRapport de TCD, puis sur
le
bouton Terminer. Déplace les étiquettes de tes trois premières
colonnes
enchamps de colonne. Tes données doivent alors s'afficher à cet endroit
sansdoublons. Il reste des colonnes Total à enlever : clic droit sur l'une
d'entre elles, Paramètres de champ et coche la case Aucun.
Pour mettre à jour le tableau, il suffit alors de cliquer sur le
bouton
Actualiser (le point d'exclamation rouge) de la barre d'outils TCD.
A+
Nicolas B.Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6
colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3
premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les
informationsqui sont de même nature dans les 3 premières colonnes et créer autant
decolonnes qu'il y a de lignes différentes. Suis-je suffisamment
explicite? J'ai bien commencé "à la main", mais celà devient vite lassant avec
descentaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas
etme proposeront une solution.
@+
Merci Michel !
Je ne prends pas encore le temps de tester pour te remercier vivement
d'ores et déjà.
@+.
"MPi" <m_pare@supprimer.videotron.ca> a écrit dans le message de news:
fghOe.30706$7b7.378027@weber.videotron.net...
Salut,
La réponse citée n'est jamais apparue sur Outlook Express... c'est un peu
emm....
Ceci pourrait être une façon de procéder
Sub MaMacro()
Dim I As Integer
Dim Colonne As Integer
On Error GoTo Erreur
For I = 1 To 10 'Scanner toutes les lignes
If Range("A" & I) = Range("A" & I + 1) And _
Range("B" & I) = Range("B" & I + 1) And _
Range("C" & I) = Range("C" & I + 1) And _
Range("A" & I) <> "" Then
'Définir la dernière colonne pour y entrer les données
Colonne = Range("A" & I & ":IV" & I).Find("*", Range("A" & I),
,
, xlByColumns, xlPrevious).Column
Range("A" & I).Offset(0, Colonne) = Range("D" & I + 1)
Range("A" & I).Offset(0, Colonne + 1) = Range("E" & I + 1)
Range("A" & I).Offset(0, Colonne + 2) = Range("F" & I + 1)
'Effacer la colonne copié
Rows(I + 1).Delete
'Comme on part d'en haut, il faut décrémenter la variable I
'Sinon, il faudrait partir de la fin et remonter
I = I - 1
End If
Next
Exit Sub
Erreur:
MsgBox Err.Description
End Sub
Michel
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message
de news:eN$5QQipFHA.2472@tk2msftngp13.phx.gbl...
Bonjour Nicolas,
Je réécris ce que j'ai répondu à Michel qui s'est aussi penché sur mon
problème, car mon énoncé n'était franchement pas explicite ...
[...]Rien ne vaut un exemple.
Supposons une liste d'enfants avec le nom des parents dans les premières
colonnes.
ID Parent | Nom Parent | Prénom Parent | ID Enfant | Nom Enfant | Prénom
Enfant |
Un parent peut avoir un ou plusieurs enfants.
La liste comprend tous les enfants
Mon souhait : regrouper sur une même ligne tous les enfants d'un même
parent
en autant de colonnes qu'il y a d'enfants. Ce qui donnerait ceci par
exemple
:
ID Parent | Nom Parent | Prénom Parent | ID 1er Enfant | Nom 1er Enfant
|
Prénom 1er Enfant | ID 2ème Enfant | Nom 2ème Enfant | Prénom 2ème
Enfant
|
ID 3ème Enfant | Nom 3ème Enfant | Prénom 3ème Enfant | ID 4ème Enfant |
Nom
4ème Enfant | Prénom 4ème Enfant |
Le nombre de colonne étant limité à 256, pour mon cas, je n'ai que 9
"enfants" avec 3 colonnes qui leur sont propres.
J'espère avoir été un peu plus clair. [...]
Merci Nicolas pour tes propositions, mais comme je me suis mal exprimé,
elles ne répondent pas au résultat escompté.
@+
"Nicolas B." <nicolas.bruot@adresse.bidon.invalid> a écrit dans le
message
de news: eqbr7tVpFHA.2976@TK2MSFTNGP12.phx.gbl...
Salut,
J'ai pas très bien compris : si tu veux regrouper en une ligne les
données
de trois colonnes, il faut que chaque cellule de la ligne (du tableau
final) contienne les données de trois colonnes (par exemple de A8, B8
et
C8). Veux-tu concaténer les données ?
Si tu préfères regrouper tes donnée en trois lignes (c'est à mon avis
le
plus simple), plusieurs solutions sont possibles :
Sélectionne ton tableau (ligne de titres comprise) et applique un
filtre
élaboré avec une Zone de critères vide, en copiant dans un autre
endroit
de la feuille et en cochant Extraction sans doublons.
Il reste alors à transposer ton tableau. Pour cela, copie-le et fais
un
collage Spécial en cochant la case Transposé.
Autre solution si les données doivent être mises à jour régulièrement
:
passer par un tableau croisé dynamique (TCD).
Sélectionne le tableau et clique sur DonnéesRapport de TCD, puis sur
le
bouton Terminer. Déplace les étiquettes de tes trois premières
colonnes
en
champs de colonne. Tes données doivent alors s'afficher à cet endroit
sans
doublons. Il reste des colonnes Total à enlever : clic droit sur l'une
d'entre elles, Paramètres de champ et coche la case Aucun.
Pour mettre à jour le tableau, il suffit alors de cliquer sur le
bouton
Actualiser (le point d'exclamation rouge) de la barre d'outils TCD.
A+
Nicolas B.
Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6
colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3
premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les
informations
qui sont de même nature dans les 3 premières colonnes et créer autant
de
colonnes qu'il y a de lignes différentes. Suis-je suffisamment
explicite
? J'ai bien commencé "à la main", mais celà devient vite lassant avec
des
centaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas
et
me proposeront une solution.
@+
Merci Michel !
Je ne prends pas encore le temps de tester pour te remercier vivement
d'ores et déjà.
@+.
"MPi" a écrit dans le message de news:
fghOe.30706$Salut,
La réponse citée n'est jamais apparue sur Outlook Express... c'est un peu
emm....
Ceci pourrait être une façon de procéder
Sub MaMacro()
Dim I As Integer
Dim Colonne As Integer
On Error GoTo Erreur
For I = 1 To 10 'Scanner toutes les lignes
If Range("A" & I) = Range("A" & I + 1) And _
Range("B" & I) = Range("B" & I + 1) And _
Range("C" & I) = Range("C" & I + 1) And _
Range("A" & I) <> "" Then
'Définir la dernière colonne pour y entrer les données
Colonne = Range("A" & I & ":IV" & I).Find("*", Range("A" & I),
,
, xlByColumns, xlPrevious).Column
Range("A" & I).Offset(0, Colonne) = Range("D" & I + 1)
Range("A" & I).Offset(0, Colonne + 1) = Range("E" & I + 1)
Range("A" & I).Offset(0, Colonne + 2) = Range("F" & I + 1)
'Effacer la colonne copié
Rows(I + 1).Delete
'Comme on part d'en haut, il faut décrémenter la variable I
'Sinon, il faudrait partir de la fin et remonter
I = I - 1
End If
Next
Exit Sub
Erreur:
MsgBox Err.Description
End Sub
Michel
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message
de news:eN$Bonjour Nicolas,
Je réécris ce que j'ai répondu à Michel qui s'est aussi penché sur mon
problème, car mon énoncé n'était franchement pas explicite ...
[...]Rien ne vaut un exemple.
Supposons une liste d'enfants avec le nom des parents dans les premières
colonnes.
ID Parent | Nom Parent | Prénom Parent | ID Enfant | Nom Enfant | Prénom
Enfant |
Un parent peut avoir un ou plusieurs enfants.
La liste comprend tous les enfants
Mon souhait : regrouper sur une même ligne tous les enfants d'un même
parenten autant de colonnes qu'il y a d'enfants. Ce qui donnerait ceci par
exemple:
ID Parent | Nom Parent | Prénom Parent | ID 1er Enfant | Nom 1er Enfant
|
Prénom 1er Enfant | ID 2ème Enfant | Nom 2ème Enfant | Prénom 2ème
Enfant
|ID 3ème Enfant | Nom 3ème Enfant | Prénom 3ème Enfant | ID 4ème Enfant |
Nom4ème Enfant | Prénom 4ème Enfant |
Le nombre de colonne étant limité à 256, pour mon cas, je n'ai que 9
"enfants" avec 3 colonnes qui leur sont propres.
J'espère avoir été un peu plus clair. [...]
Merci Nicolas pour tes propositions, mais comme je me suis mal exprimé,
elles ne répondent pas au résultat escompté.
@+
"Nicolas B." a écrit dans le
message
de news:Salut,
J'ai pas très bien compris : si tu veux regrouper en une ligne les
donnéesde trois colonnes, il faut que chaque cellule de la ligne (du tableau
final) contienne les données de trois colonnes (par exemple de A8, B8
et
C8). Veux-tu concaténer les données ?
Si tu préfères regrouper tes donnée en trois lignes (c'est à mon avis
le
plus simple), plusieurs solutions sont possibles :
Sélectionne ton tableau (ligne de titres comprise) et applique un
filtre
élaboré avec une Zone de critères vide, en copiant dans un autre
endroit
de la feuille et en cochant Extraction sans doublons.
Il reste alors à transposer ton tableau. Pour cela, copie-le et fais
un
collage Spécial en cochant la case Transposé.
Autre solution si les données doivent être mises à jour régulièrement
:
passer par un tableau croisé dynamique (TCD).
Sélectionne le tableau et clique sur DonnéesRapport de TCD, puis sur
le
bouton Terminer. Déplace les étiquettes de tes trois premières
colonnes
enchamps de colonne. Tes données doivent alors s'afficher à cet endroit
sansdoublons. Il reste des colonnes Total à enlever : clic droit sur l'une
d'entre elles, Paramètres de champ et coche la case Aucun.
Pour mettre à jour le tableau, il suffit alors de cliquer sur le
bouton
Actualiser (le point d'exclamation rouge) de la barre d'outils TCD.
A+
Nicolas B.Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6
colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3
premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les
informationsqui sont de même nature dans les 3 premières colonnes et créer autant
decolonnes qu'il y a de lignes différentes. Suis-je suffisamment
explicite? J'ai bien commencé "à la main", mais celà devient vite lassant avec
descentaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce cas
etme proposeront une solution.
@+
Ben ... Ça ne fonctionne pas ... ;o((( Il ne se passe rien.
Je ne comprends pas, le code me paraît quand même correct, même si je
débute
...
Est-ce que tu pourrais voir ce qui ne va pas Michel, s'il-te-plaît, oiu un
autre d'ailleurs ?
Merci d'avance.
@+
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message
de news:Merci Michel !
Je ne prends pas encore le temps de tester pour te remercier vivement
d'ores et déjà.
@+.
"MPi" a écrit dans le message de news:
fghOe.30706$Salut,
La réponse citée n'est jamais apparue sur Outlook Express... c'est un
peu
emm....
Ceci pourrait être une façon de procéder
Sub MaMacro()
Dim I As Integer
Dim Colonne As Integer
On Error GoTo Erreur
For I = 1 To 10 'Scanner toutes les lignes
If Range("A" & I) = Range("A" & I + 1) And _
Range("B" & I) = Range("B" & I + 1) And _
Range("C" & I) = Range("C" & I + 1) And _
Range("A" & I) <> "" Then
'Définir la dernière colonne pour y entrer les données
Colonne = Range("A" & I & ":IV" & I).Find("*", Range("A" &
I),
,
, xlByColumns, xlPrevious).Column
Range("A" & I).Offset(0, Colonne) = Range("D" & I + 1)
Range("A" & I).Offset(0, Colonne + 1) = Range("E" & I + 1)
Range("A" & I).Offset(0, Colonne + 2) = Range("F" & I + 1)
'Effacer la colonne copié
Rows(I + 1).Delete
'Comme on part d'en haut, il faut décrémenter la variable I
'Sinon, il faudrait partir de la fin et remonter
I = I - 1
End If
Next
Exit Sub
Erreur:
MsgBox Err.Description
End Sub
Michel
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message
de news:eN$Bonjour Nicolas,
Je réécris ce que j'ai répondu à Michel qui s'est aussi penché sur mon
problème, car mon énoncé n'était franchement pas explicite ...
[...]Rien ne vaut un exemple.
Supposons une liste d'enfants avec le nom des parents dans les
premières
colonnes.
ID Parent | Nom Parent | Prénom Parent | ID Enfant | Nom Enfant |
Prénom
Enfant |
Un parent peut avoir un ou plusieurs enfants.
La liste comprend tous les enfants
Mon souhait : regrouper sur une même ligne tous les enfants d'un même
parenten autant de colonnes qu'il y a d'enfants. Ce qui donnerait ceci par
exemple:
ID Parent | Nom Parent | Prénom Parent | ID 1er Enfant | Nom 1er
Enfant
|
Prénom 1er Enfant | ID 2ème Enfant | Nom 2ème Enfant | Prénom 2ème
Enfant
|ID 3ème Enfant | Nom 3ème Enfant | Prénom 3ème Enfant | ID 4ème Enfant
|
Nom4ème Enfant | Prénom 4ème Enfant |
Le nombre de colonne étant limité à 256, pour mon cas, je n'ai que 9
"enfants" avec 3 colonnes qui leur sont propres.
J'espère avoir été un peu plus clair. [...]
Merci Nicolas pour tes propositions, mais comme je me suis mal
exprimé,
elles ne répondent pas au résultat escompté.
@+
"Nicolas B." a écrit dans le
message
de news:Salut,
J'ai pas très bien compris : si tu veux regrouper en une ligne les
donnéesde trois colonnes, il faut que chaque cellule de la ligne (du
tableau
final) contienne les données de trois colonnes (par exemple de A8,
B8
et
C8). Veux-tu concaténer les données ?
Si tu préfères regrouper tes donnée en trois lignes (c'est à mon
avis
le
plus simple), plusieurs solutions sont possibles :
Sélectionne ton tableau (ligne de titres comprise) et applique un
filtre
élaboré avec une Zone de critères vide, en copiant dans un autre
endroit
de la feuille et en cochant Extraction sans doublons.
Il reste alors à transposer ton tableau. Pour cela, copie-le et fais
un
collage Spécial en cochant la case Transposé.
Autre solution si les données doivent être mises à jour
régulièrement
:
passer par un tableau croisé dynamique (TCD).
Sélectionne le tableau et clique sur DonnéesRapport de TCD, puis
sur
le
bouton Terminer. Déplace les étiquettes de tes trois premières
colonnes
enchamps de colonne. Tes données doivent alors s'afficher à cet
endroit
sansdoublons. Il reste des colonnes Total à enlever : clic droit sur
l'une
d'entre elles, Paramètres de champ et coche la case Aucun.
Pour mettre à jour le tableau, il suffit alors de cliquer sur le
bouton
Actualiser (le point d'exclamation rouge) de la barre d'outils TCD.
A+
Nicolas B.Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6
colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3
premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les
informationsqui sont de même nature dans les 3 premières colonnes et créer
autant
decolonnes qu'il y a de lignes différentes. Suis-je suffisamment
explicite? J'ai bien commencé "à la main", mais celà devient vite lassant
avec
descentaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce
cas
etme proposeront une solution.
@+
Ben ... Ça ne fonctionne pas ... ;o((( Il ne se passe rien.
Je ne comprends pas, le code me paraît quand même correct, même si je
débute
...
Est-ce que tu pourrais voir ce qui ne va pas Michel, s'il-te-plaît, oiu un
autre d'ailleurs ?
Merci d'avance.
@+
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message
de news: uEeoCn0pFHA.1032@TK2MSFTNGP09.phx.gbl...
Merci Michel !
Je ne prends pas encore le temps de tester pour te remercier vivement
d'ores et déjà.
@+.
"MPi" <m_pare@supprimer.videotron.ca> a écrit dans le message de news:
fghOe.30706$7b7.378027@weber.videotron.net...
Salut,
La réponse citée n'est jamais apparue sur Outlook Express... c'est un
peu
emm....
Ceci pourrait être une façon de procéder
Sub MaMacro()
Dim I As Integer
Dim Colonne As Integer
On Error GoTo Erreur
For I = 1 To 10 'Scanner toutes les lignes
If Range("A" & I) = Range("A" & I + 1) And _
Range("B" & I) = Range("B" & I + 1) And _
Range("C" & I) = Range("C" & I + 1) And _
Range("A" & I) <> "" Then
'Définir la dernière colonne pour y entrer les données
Colonne = Range("A" & I & ":IV" & I).Find("*", Range("A" &
I),
,
, xlByColumns, xlPrevious).Column
Range("A" & I).Offset(0, Colonne) = Range("D" & I + 1)
Range("A" & I).Offset(0, Colonne + 1) = Range("E" & I + 1)
Range("A" & I).Offset(0, Colonne + 2) = Range("F" & I + 1)
'Effacer la colonne copié
Rows(I + 1).Delete
'Comme on part d'en haut, il faut décrémenter la variable I
'Sinon, il faudrait partir de la fin et remonter
I = I - 1
End If
Next
Exit Sub
Erreur:
MsgBox Err.Description
End Sub
Michel
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message
de news:eN$5QQipFHA.2472@tk2msftngp13.phx.gbl...
Bonjour Nicolas,
Je réécris ce que j'ai répondu à Michel qui s'est aussi penché sur mon
problème, car mon énoncé n'était franchement pas explicite ...
[...]Rien ne vaut un exemple.
Supposons une liste d'enfants avec le nom des parents dans les
premières
colonnes.
ID Parent | Nom Parent | Prénom Parent | ID Enfant | Nom Enfant |
Prénom
Enfant |
Un parent peut avoir un ou plusieurs enfants.
La liste comprend tous les enfants
Mon souhait : regrouper sur une même ligne tous les enfants d'un même
parent
en autant de colonnes qu'il y a d'enfants. Ce qui donnerait ceci par
exemple
:
ID Parent | Nom Parent | Prénom Parent | ID 1er Enfant | Nom 1er
Enfant
|
Prénom 1er Enfant | ID 2ème Enfant | Nom 2ème Enfant | Prénom 2ème
Enfant
|
ID 3ème Enfant | Nom 3ème Enfant | Prénom 3ème Enfant | ID 4ème Enfant
|
Nom
4ème Enfant | Prénom 4ème Enfant |
Le nombre de colonne étant limité à 256, pour mon cas, je n'ai que 9
"enfants" avec 3 colonnes qui leur sont propres.
J'espère avoir été un peu plus clair. [...]
Merci Nicolas pour tes propositions, mais comme je me suis mal
exprimé,
elles ne répondent pas au résultat escompté.
@+
"Nicolas B." <nicolas.bruot@adresse.bidon.invalid> a écrit dans le
message
de news: eqbr7tVpFHA.2976@TK2MSFTNGP12.phx.gbl...
Salut,
J'ai pas très bien compris : si tu veux regrouper en une ligne les
données
de trois colonnes, il faut que chaque cellule de la ligne (du
tableau
final) contienne les données de trois colonnes (par exemple de A8,
B8
et
C8). Veux-tu concaténer les données ?
Si tu préfères regrouper tes donnée en trois lignes (c'est à mon
avis
le
plus simple), plusieurs solutions sont possibles :
Sélectionne ton tableau (ligne de titres comprise) et applique un
filtre
élaboré avec une Zone de critères vide, en copiant dans un autre
endroit
de la feuille et en cochant Extraction sans doublons.
Il reste alors à transposer ton tableau. Pour cela, copie-le et fais
un
collage Spécial en cochant la case Transposé.
Autre solution si les données doivent être mises à jour
régulièrement
:
passer par un tableau croisé dynamique (TCD).
Sélectionne le tableau et clique sur DonnéesRapport de TCD, puis
sur
le
bouton Terminer. Déplace les étiquettes de tes trois premières
colonnes
en
champs de colonne. Tes données doivent alors s'afficher à cet
endroit
sans
doublons. Il reste des colonnes Total à enlever : clic droit sur
l'une
d'entre elles, Paramètres de champ et coche la case Aucun.
Pour mettre à jour le tableau, il suffit alors de cliquer sur le
bouton
Actualiser (le point d'exclamation rouge) de la barre d'outils TCD.
A+
Nicolas B.
Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6
colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3
premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les
informations
qui sont de même nature dans les 3 premières colonnes et créer
autant
de
colonnes qu'il y a de lignes différentes. Suis-je suffisamment
explicite
? J'ai bien commencé "à la main", mais celà devient vite lassant
avec
des
centaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce
cas
et
me proposeront une solution.
@+
Ben ... Ça ne fonctionne pas ... ;o((( Il ne se passe rien.
Je ne comprends pas, le code me paraît quand même correct, même si je
débute
...
Est-ce que tu pourrais voir ce qui ne va pas Michel, s'il-te-plaît, oiu un
autre d'ailleurs ?
Merci d'avance.
@+
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message
de news:Merci Michel !
Je ne prends pas encore le temps de tester pour te remercier vivement
d'ores et déjà.
@+.
"MPi" a écrit dans le message de news:
fghOe.30706$Salut,
La réponse citée n'est jamais apparue sur Outlook Express... c'est un
peu
emm....
Ceci pourrait être une façon de procéder
Sub MaMacro()
Dim I As Integer
Dim Colonne As Integer
On Error GoTo Erreur
For I = 1 To 10 'Scanner toutes les lignes
If Range("A" & I) = Range("A" & I + 1) And _
Range("B" & I) = Range("B" & I + 1) And _
Range("C" & I) = Range("C" & I + 1) And _
Range("A" & I) <> "" Then
'Définir la dernière colonne pour y entrer les données
Colonne = Range("A" & I & ":IV" & I).Find("*", Range("A" &
I),
,
, xlByColumns, xlPrevious).Column
Range("A" & I).Offset(0, Colonne) = Range("D" & I + 1)
Range("A" & I).Offset(0, Colonne + 1) = Range("E" & I + 1)
Range("A" & I).Offset(0, Colonne + 2) = Range("F" & I + 1)
'Effacer la colonne copié
Rows(I + 1).Delete
'Comme on part d'en haut, il faut décrémenter la variable I
'Sinon, il faudrait partir de la fin et remonter
I = I - 1
End If
Next
Exit Sub
Erreur:
MsgBox Err.Description
End Sub
Michel
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message
de news:eN$Bonjour Nicolas,
Je réécris ce que j'ai répondu à Michel qui s'est aussi penché sur mon
problème, car mon énoncé n'était franchement pas explicite ...
[...]Rien ne vaut un exemple.
Supposons une liste d'enfants avec le nom des parents dans les
premières
colonnes.
ID Parent | Nom Parent | Prénom Parent | ID Enfant | Nom Enfant |
Prénom
Enfant |
Un parent peut avoir un ou plusieurs enfants.
La liste comprend tous les enfants
Mon souhait : regrouper sur une même ligne tous les enfants d'un même
parenten autant de colonnes qu'il y a d'enfants. Ce qui donnerait ceci par
exemple:
ID Parent | Nom Parent | Prénom Parent | ID 1er Enfant | Nom 1er
Enfant
|
Prénom 1er Enfant | ID 2ème Enfant | Nom 2ème Enfant | Prénom 2ème
Enfant
|ID 3ème Enfant | Nom 3ème Enfant | Prénom 3ème Enfant | ID 4ème Enfant
|
Nom4ème Enfant | Prénom 4ème Enfant |
Le nombre de colonne étant limité à 256, pour mon cas, je n'ai que 9
"enfants" avec 3 colonnes qui leur sont propres.
J'espère avoir été un peu plus clair. [...]
Merci Nicolas pour tes propositions, mais comme je me suis mal
exprimé,
elles ne répondent pas au résultat escompté.
@+
"Nicolas B." a écrit dans le
message
de news:Salut,
J'ai pas très bien compris : si tu veux regrouper en une ligne les
donnéesde trois colonnes, il faut que chaque cellule de la ligne (du
tableau
final) contienne les données de trois colonnes (par exemple de A8,
B8
et
C8). Veux-tu concaténer les données ?
Si tu préfères regrouper tes donnée en trois lignes (c'est à mon
avis
le
plus simple), plusieurs solutions sont possibles :
Sélectionne ton tableau (ligne de titres comprise) et applique un
filtre
élaboré avec une Zone de critères vide, en copiant dans un autre
endroit
de la feuille et en cochant Extraction sans doublons.
Il reste alors à transposer ton tableau. Pour cela, copie-le et fais
un
collage Spécial en cochant la case Transposé.
Autre solution si les données doivent être mises à jour
régulièrement
:
passer par un tableau croisé dynamique (TCD).
Sélectionne le tableau et clique sur DonnéesRapport de TCD, puis
sur
le
bouton Terminer. Déplace les étiquettes de tes trois premières
colonnes
enchamps de colonne. Tes données doivent alors s'afficher à cet
endroit
sansdoublons. Il reste des colonnes Total à enlever : clic droit sur
l'une
d'entre elles, Paramètres de champ et coche la case Aucun.
Pour mettre à jour le tableau, il suffit alors de cliquer sur le
bouton
Actualiser (le point d'exclamation rouge) de la barre d'outils TCD.
A+
Nicolas B.Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6
colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3
premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les
informationsqui sont de même nature dans les 3 premières colonnes et créer
autant
decolonnes qu'il y a de lignes différentes. Suis-je suffisamment
explicite? J'ai bien commencé "à la main", mais celà devient vite lassant
avec
descentaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce
cas
etme proposeront une solution.
@+
Salut,
Qu'est-ce qui ne fonctionne pas au juste ?
Ici, ça fonctionnait pourtant bien, en autant que les données étaient en
A,
B, C, D, E et F
Pour ce qui est du "1 To 10", ben là, il faudra ajuster selon les lignes
de
valeurs de ta feuille.
Michel
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message
de news:%Ben ... Ça ne fonctionne pas ... ;o((( Il ne se passe rien.
Je ne comprends pas, le code me paraît quand même correct, même si je
débute...
Est-ce que tu pourrais voir ce qui ne va pas Michel, s'il-te-plaît, oiu
un
autre d'ailleurs ?
Merci d'avance.
@+
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
messagede news:Merci Michel !
Je ne prends pas encore le temps de tester pour te remercier vivement
d'ores et déjà.
@+.
"MPi" a écrit dans le message de news:
fghOe.30706$Salut,
La réponse citée n'est jamais apparue sur Outlook Express... c'est un
peuemm....
Ceci pourrait être une façon de procéder
Sub MaMacro()
Dim I As Integer
Dim Colonne As Integer
On Error GoTo Erreur
For I = 1 To 10 'Scanner toutes les lignes
If Range("A" & I) = Range("A" & I + 1) And _
Range("B" & I) = Range("B" & I + 1) And _
Range("C" & I) = Range("C" & I + 1) And _
Range("A" & I) <> "" Then
'Définir la dernière colonne pour y entrer les données
Colonne = Range("A" & I & ":IV" & I).Find("*", Range("A" &
I),,
, xlByColumns, xlPrevious).Column
Range("A" & I).Offset(0, Colonne) = Range("D" & I + 1)
Range("A" & I).Offset(0, Colonne + 1) = Range("E" & I + 1)
Range("A" & I).Offset(0, Colonne + 2) = Range("F" & I + 1)
'Effacer la colonne copié
Rows(I + 1).Delete
'Comme on part d'en haut, il faut décrémenter la variable I
'Sinon, il faudrait partir de la fin et remonter
I = I - 1
End If
Next
Exit Sub
Erreur:
MsgBox Err.Description
End Sub
Michel
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message
de news:eN$Bonjour Nicolas,
Je réécris ce que j'ai répondu à Michel qui s'est aussi penché sur
mon
problème, car mon énoncé n'était franchement pas explicite ...
[...]Rien ne vaut un exemple.
Supposons une liste d'enfants avec le nom des parents dans les
premièrescolonnes.
ID Parent | Nom Parent | Prénom Parent | ID Enfant | Nom Enfant |
PrénomEnfant |
Un parent peut avoir un ou plusieurs enfants.
La liste comprend tous les enfants
Mon souhait : regrouper sur une même ligne tous les enfants d'un même
parenten autant de colonnes qu'il y a d'enfants. Ce qui donnerait ceci par
exemple:
ID Parent | Nom Parent | Prénom Parent | ID 1er Enfant | Nom 1er
Enfant|
Prénom 1er Enfant | ID 2ème Enfant | Nom 2ème Enfant | Prénom 2ème
Enfant
|ID 3ème Enfant | Nom 3ème Enfant | Prénom 3ème Enfant | ID 4ème
Enfant
|Nom4ème Enfant | Prénom 4ème Enfant |
Le nombre de colonne étant limité à 256, pour mon cas, je n'ai que 9
"enfants" avec 3 colonnes qui leur sont propres.
J'espère avoir été un peu plus clair. [...]
Merci Nicolas pour tes propositions, mais comme je me suis mal
exprimé,elles ne répondent pas au résultat escompté.
@+
"Nicolas B." a écrit dans le
message
de news:Salut,
J'ai pas très bien compris : si tu veux regrouper en une ligne les
donnéesde trois colonnes, il faut que chaque cellule de la ligne (du
tableaufinal) contienne les données de trois colonnes (par exemple de A8,
B8et
C8). Veux-tu concaténer les données ?
Si tu préfères regrouper tes donnée en trois lignes (c'est à mon
avisle
plus simple), plusieurs solutions sont possibles :
Sélectionne ton tableau (ligne de titres comprise) et applique un
filtre
élaboré avec une Zone de critères vide, en copiant dans un autre
endroit
de la feuille et en cochant Extraction sans doublons.
Il reste alors à transposer ton tableau. Pour cela, copie-le et
fais
un
collage Spécial en cochant la case Transposé.
Autre solution si les données doivent être mises à jour
régulièrement:
passer par un tableau croisé dynamique (TCD).
Sélectionne le tableau et clique sur DonnéesRapport de TCD, puis
surle
bouton Terminer. Déplace les étiquettes de tes trois premières
colonnes
enchamps de colonne. Tes données doivent alors s'afficher à cet
endroitsansdoublons. Il reste des colonnes Total à enlever : clic droit sur
l'uned'entre elles, Paramètres de champ et coche la case Aucun.
Pour mettre à jour le tableau, il suffit alors de cliquer sur le
bouton
Actualiser (le point d'exclamation rouge) de la barre d'outils TCD.
A+
Nicolas B.Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6
colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3
premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les
informationsqui sont de même nature dans les 3 premières colonnes et créer
autantdecolonnes qu'il y a de lignes différentes. Suis-je suffisamment
explicite? J'ai bien commencé "à la main", mais celà devient vite lassant
avecdescentaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce
casetme proposeront une solution.
@+
Salut,
Qu'est-ce qui ne fonctionne pas au juste ?
Ici, ça fonctionnait pourtant bien, en autant que les données étaient en
A,
B, C, D, E et F
Pour ce qui est du "1 To 10", ben là, il faudra ajuster selon les lignes
de
valeurs de ta feuille.
Michel
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message
de news:%23KEM2yAqFHA.1324@tk2msftngp13.phx.gbl...
Ben ... Ça ne fonctionne pas ... ;o((( Il ne se passe rien.
Je ne comprends pas, le code me paraît quand même correct, même si je
débute
...
Est-ce que tu pourrais voir ce qui ne va pas Michel, s'il-te-plaît, oiu
un
autre d'ailleurs ?
Merci d'avance.
@+
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message
de news: uEeoCn0pFHA.1032@TK2MSFTNGP09.phx.gbl...
Merci Michel !
Je ne prends pas encore le temps de tester pour te remercier vivement
d'ores et déjà.
@+.
"MPi" <m_pare@supprimer.videotron.ca> a écrit dans le message de news:
fghOe.30706$7b7.378027@weber.videotron.net...
Salut,
La réponse citée n'est jamais apparue sur Outlook Express... c'est un
peu
emm....
Ceci pourrait être une façon de procéder
Sub MaMacro()
Dim I As Integer
Dim Colonne As Integer
On Error GoTo Erreur
For I = 1 To 10 'Scanner toutes les lignes
If Range("A" & I) = Range("A" & I + 1) And _
Range("B" & I) = Range("B" & I + 1) And _
Range("C" & I) = Range("C" & I + 1) And _
Range("A" & I) <> "" Then
'Définir la dernière colonne pour y entrer les données
Colonne = Range("A" & I & ":IV" & I).Find("*", Range("A" &
I),
,
, xlByColumns, xlPrevious).Column
Range("A" & I).Offset(0, Colonne) = Range("D" & I + 1)
Range("A" & I).Offset(0, Colonne + 1) = Range("E" & I + 1)
Range("A" & I).Offset(0, Colonne + 2) = Range("F" & I + 1)
'Effacer la colonne copié
Rows(I + 1).Delete
'Comme on part d'en haut, il faut décrémenter la variable I
'Sinon, il faudrait partir de la fin et remonter
I = I - 1
End If
Next
Exit Sub
Erreur:
MsgBox Err.Description
End Sub
Michel
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message
de news:eN$5QQipFHA.2472@tk2msftngp13.phx.gbl...
Bonjour Nicolas,
Je réécris ce que j'ai répondu à Michel qui s'est aussi penché sur
mon
problème, car mon énoncé n'était franchement pas explicite ...
[...]Rien ne vaut un exemple.
Supposons une liste d'enfants avec le nom des parents dans les
premières
colonnes.
ID Parent | Nom Parent | Prénom Parent | ID Enfant | Nom Enfant |
Prénom
Enfant |
Un parent peut avoir un ou plusieurs enfants.
La liste comprend tous les enfants
Mon souhait : regrouper sur une même ligne tous les enfants d'un même
parent
en autant de colonnes qu'il y a d'enfants. Ce qui donnerait ceci par
exemple
:
ID Parent | Nom Parent | Prénom Parent | ID 1er Enfant | Nom 1er
Enfant
|
Prénom 1er Enfant | ID 2ème Enfant | Nom 2ème Enfant | Prénom 2ème
Enfant
|
ID 3ème Enfant | Nom 3ème Enfant | Prénom 3ème Enfant | ID 4ème
Enfant
|
Nom
4ème Enfant | Prénom 4ème Enfant |
Le nombre de colonne étant limité à 256, pour mon cas, je n'ai que 9
"enfants" avec 3 colonnes qui leur sont propres.
J'espère avoir été un peu plus clair. [...]
Merci Nicolas pour tes propositions, mais comme je me suis mal
exprimé,
elles ne répondent pas au résultat escompté.
@+
"Nicolas B." <nicolas.bruot@adresse.bidon.invalid> a écrit dans le
message
de news: eqbr7tVpFHA.2976@TK2MSFTNGP12.phx.gbl...
Salut,
J'ai pas très bien compris : si tu veux regrouper en une ligne les
données
de trois colonnes, il faut que chaque cellule de la ligne (du
tableau
final) contienne les données de trois colonnes (par exemple de A8,
B8
et
C8). Veux-tu concaténer les données ?
Si tu préfères regrouper tes donnée en trois lignes (c'est à mon
avis
le
plus simple), plusieurs solutions sont possibles :
Sélectionne ton tableau (ligne de titres comprise) et applique un
filtre
élaboré avec une Zone de critères vide, en copiant dans un autre
endroit
de la feuille et en cochant Extraction sans doublons.
Il reste alors à transposer ton tableau. Pour cela, copie-le et
fais
un
collage Spécial en cochant la case Transposé.
Autre solution si les données doivent être mises à jour
régulièrement
:
passer par un tableau croisé dynamique (TCD).
Sélectionne le tableau et clique sur DonnéesRapport de TCD, puis
sur
le
bouton Terminer. Déplace les étiquettes de tes trois premières
colonnes
en
champs de colonne. Tes données doivent alors s'afficher à cet
endroit
sans
doublons. Il reste des colonnes Total à enlever : clic droit sur
l'une
d'entre elles, Paramètres de champ et coche la case Aucun.
Pour mettre à jour le tableau, il suffit alors de cliquer sur le
bouton
Actualiser (le point d'exclamation rouge) de la barre d'outils TCD.
A+
Nicolas B.
Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6
colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3
premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les
informations
qui sont de même nature dans les 3 premières colonnes et créer
autant
de
colonnes qu'il y a de lignes différentes. Suis-je suffisamment
explicite
? J'ai bien commencé "à la main", mais celà devient vite lassant
avec
des
centaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce
cas
et
me proposeront une solution.
@+
Salut,
Qu'est-ce qui ne fonctionne pas au juste ?
Ici, ça fonctionnait pourtant bien, en autant que les données étaient en
A,
B, C, D, E et F
Pour ce qui est du "1 To 10", ben là, il faudra ajuster selon les lignes
de
valeurs de ta feuille.
Michel
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message
de news:%Ben ... Ça ne fonctionne pas ... ;o((( Il ne se passe rien.
Je ne comprends pas, le code me paraît quand même correct, même si je
débute...
Est-ce que tu pourrais voir ce qui ne va pas Michel, s'il-te-plaît, oiu
un
autre d'ailleurs ?
Merci d'avance.
@+
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
messagede news:Merci Michel !
Je ne prends pas encore le temps de tester pour te remercier vivement
d'ores et déjà.
@+.
"MPi" a écrit dans le message de news:
fghOe.30706$Salut,
La réponse citée n'est jamais apparue sur Outlook Express... c'est un
peuemm....
Ceci pourrait être une façon de procéder
Sub MaMacro()
Dim I As Integer
Dim Colonne As Integer
On Error GoTo Erreur
For I = 1 To 10 'Scanner toutes les lignes
If Range("A" & I) = Range("A" & I + 1) And _
Range("B" & I) = Range("B" & I + 1) And _
Range("C" & I) = Range("C" & I + 1) And _
Range("A" & I) <> "" Then
'Définir la dernière colonne pour y entrer les données
Colonne = Range("A" & I & ":IV" & I).Find("*", Range("A" &
I),,
, xlByColumns, xlPrevious).Column
Range("A" & I).Offset(0, Colonne) = Range("D" & I + 1)
Range("A" & I).Offset(0, Colonne + 1) = Range("E" & I + 1)
Range("A" & I).Offset(0, Colonne + 2) = Range("F" & I + 1)
'Effacer la colonne copié
Rows(I + 1).Delete
'Comme on part d'en haut, il faut décrémenter la variable I
'Sinon, il faudrait partir de la fin et remonter
I = I - 1
End If
Next
Exit Sub
Erreur:
MsgBox Err.Description
End Sub
Michel
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message
de news:eN$Bonjour Nicolas,
Je réécris ce que j'ai répondu à Michel qui s'est aussi penché sur
mon
problème, car mon énoncé n'était franchement pas explicite ...
[...]Rien ne vaut un exemple.
Supposons une liste d'enfants avec le nom des parents dans les
premièrescolonnes.
ID Parent | Nom Parent | Prénom Parent | ID Enfant | Nom Enfant |
PrénomEnfant |
Un parent peut avoir un ou plusieurs enfants.
La liste comprend tous les enfants
Mon souhait : regrouper sur une même ligne tous les enfants d'un même
parenten autant de colonnes qu'il y a d'enfants. Ce qui donnerait ceci par
exemple:
ID Parent | Nom Parent | Prénom Parent | ID 1er Enfant | Nom 1er
Enfant|
Prénom 1er Enfant | ID 2ème Enfant | Nom 2ème Enfant | Prénom 2ème
Enfant
|ID 3ème Enfant | Nom 3ème Enfant | Prénom 3ème Enfant | ID 4ème
Enfant
|Nom4ème Enfant | Prénom 4ème Enfant |
Le nombre de colonne étant limité à 256, pour mon cas, je n'ai que 9
"enfants" avec 3 colonnes qui leur sont propres.
J'espère avoir été un peu plus clair. [...]
Merci Nicolas pour tes propositions, mais comme je me suis mal
exprimé,elles ne répondent pas au résultat escompté.
@+
"Nicolas B." a écrit dans le
message
de news:Salut,
J'ai pas très bien compris : si tu veux regrouper en une ligne les
donnéesde trois colonnes, il faut que chaque cellule de la ligne (du
tableaufinal) contienne les données de trois colonnes (par exemple de A8,
B8et
C8). Veux-tu concaténer les données ?
Si tu préfères regrouper tes donnée en trois lignes (c'est à mon
avisle
plus simple), plusieurs solutions sont possibles :
Sélectionne ton tableau (ligne de titres comprise) et applique un
filtre
élaboré avec une Zone de critères vide, en copiant dans un autre
endroit
de la feuille et en cochant Extraction sans doublons.
Il reste alors à transposer ton tableau. Pour cela, copie-le et
fais
un
collage Spécial en cochant la case Transposé.
Autre solution si les données doivent être mises à jour
régulièrement:
passer par un tableau croisé dynamique (TCD).
Sélectionne le tableau et clique sur DonnéesRapport de TCD, puis
surle
bouton Terminer. Déplace les étiquettes de tes trois premières
colonnes
enchamps de colonne. Tes données doivent alors s'afficher à cet
endroitsansdoublons. Il reste des colonnes Total à enlever : clic droit sur
l'uned'entre elles, Paramètres de champ et coche la case Aucun.
Pour mettre à jour le tableau, il suffit alors de cliquer sur le
bouton
Actualiser (le point d'exclamation rouge) de la barre d'outils TCD.
A+
Nicolas B.Bonjour à tous !
Je vous expose l'objet de mes soucis du jour :
- sur une seule feuille, j'ai des informations en ligne sur 6
colonnes,
quelques centaines de lignes
- une ligne peut regrouper les mêmes informations dans les 3
premières
colonnes
- seules les 3 colonnes suivantes distinguent chaque ligne
-> Je souhaiterais pouvoir regrouper sur une seule ligne les
informationsqui sont de même nature dans les 3 premières colonnes et créer
autantdecolonnes qu'il y a de lignes différentes. Suis-je suffisamment
explicite? J'ai bien commencé "à la main", mais celà devient vite lassant
avecdescentaines de lignes ...
et comme je débute en vba, j'avoue mon impuissance là ...
Je devine bien le principe avec des "for each", mais je cale !
Merci d'avance à ceux qui prendront le temps de se pencher sur ce
casetme proposeront une solution.
@+