ramener plusieurs lignes sur une seule

Le
vincerig
Bonjour,
Suite à une extraction de ma base de données, j'ai un tableau excel qui s'affiche avec en ligne le nom, le prénom, etc le truc c'est que si une personne à 2 données, elle apparait sur 2 lignes.
J'ai besoin de faire un publipostage et souhaiterais donc ramener sur une seule ligne (en créant des colonnes) les données pour une même personne.

Une idée ?
Merci d'avance
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #18524671
| Une idée ?

A ) tu ajoutes une colonne en y mettant la formule
= A2 & B2 'nom et Prénom
B) tu tries ton tableau sur à partir de cette colonne
C) Tu appliques un filtre élaboré sur cette colonne
en prenant comme critère une formule
G2:G50 colonne supposément ajoutée
zone de critère du filtre : H1:H2
h1 = tu laisses complètement vide
h2 : la formule suivante : =nb.si(G2:G50;G2)>1

Seules les enregistrements ayant au moins 2 entrées ou plus
se retrouveront dans la plage filtrée
En VBA, tu fais une boucle seulement sur les enregistrements affichés
et tu vérifies si la première cellule = la deuxième si oui tu copies la ligne
de la deuxième ligne à côté de la première... ainsi de suite.

Voilà pour l'idée.






"vincerig"
Bonjour,
Suite à une extraction de ma base de données, j'ai un tableau excel qui
s'affiche avec en ligne le nom, le prénom, etc... le truc c'est que si une
personne à 2 données, elle apparait sur 2 lignes.
J'ai besoin de faire un publipostage et souhaiterais donc ramener sur une seule
ligne (en créant des colonnes) les données pour une même personne.

Une idée ?
Merci d'avance
garnote
Le #18524891
Dis donc Denis, aurais-tu un bouquin Excel à me suggérer
pour avoir accès ( ne serait-ce que très partiellement )
à ton savoir encyclopédique ?

Serge
vincerig
Le #18524941
michdenis a écrit le 29/01/2009 à 17h41 :
| Une idée ?

A ) tu ajoutes une colonne en y mettant la formule
= A2 & B2 'nom et Prénom
B) tu tries ton tableau sur à partir de cette colonne
C) Tu appliques un filtre élaboré sur cette colonne
en prenant comme critère une formule
G2:G50 colonne supposément ajoutée
zone de critère du filtre : H1:H2
h1 = tu laisses complètement vide
h2 : la formule suivante : =nb.si(G2:G50;G2)>1

Seules les enregistrements ayant au moins 2 entrées ou plus
se retrouveront dans la plage filtrée
En VBA, tu fais une boucle seulement sur les enregistrements affichés
et tu vérifies si la première cellule = la deuxième si oui
tu copies la ligne
de la deuxième ligne à côté de la première...
ainsi de suite.

Voilà pour l'idée.






"vincerig" a écrit dans le
message de groupe de discussion :

Bonjour,
Suite à une extraction de ma base de données, j'ai un tableau
excel qui
s'affiche avec en ligne le nom, le prénom, etc... le truc c'est que si
une
personne à 2 données, elle apparait sur 2 lignes.
J'ai besoin de faire un publipostage et souhaiterais donc ramener sur une seule
ligne (en créant des colonnes) les données pour une même
personne.

Une idée ?
Merci d'avance


Merci pour cette idée !!
peux-tu expliciter la macro STP ?
michdenis
Le #18525401
| un bouquin Excel
**** ?????

Il y a bien sûr les volumes de John Walkenbach
Il en a écrit plusieurs sur VBA et aussi sur les formules de la feuille de calcul

Il y a les bouquins de Stephen Bullen qu'il a écrit avec
différents collaborateurs selon les ouvrages.

Sur les tableaux croisés dynamiques Excel 2007, il y a
"Pivot Table Data Crunching for Microsoft® Office Excel® 2007"
Copyright © 2007 by Pearson Education, Inc.

Excel® PivotTables and Charts
By Peter G. Aitken (2006)

Excel Pivot Tables Recipe Book
A Problem-Solution Approach
DEBRA DALGLEISH (2006) (Ontarienne)
Je ne suis pas trop fervent de l'approche par
problématique -> ça dépend des goûts

Et ce forum -> on y retrouve beaucoup de suggestions
et de détails qu'on ne retrouvent jamais dans les bouquins.

Et surtout, la pratique que ce soit du code ou des formules.

Il faut avoir plusieurs bouquins d'auteurs différents car chacun
y exploite ses forces.


"garnote"
Dis donc Denis, aurais-tu un bouquin Excel à me suggérer
pour avoir accès ( ne serait-ce que très partiellement )
à ton savoir encyclopédique ?

Serge
garnote
Le #18525801
OK merci, je vais lire tout ça en fin de semaine ;-)

Deux types se croisent :
- Comment va la santé ?
- Bof, j'ai fait un check-up le mois dernier et c'était pas brillant.
Alors, le médecin m'a conseillé de faire du sport.
- Et t'en fais ?
- Ouais, je fais des barres parallèles.
- C'est quoi déjà ? Tu sais, le sport et moi...
- Je vais prendre un verre au bistrot, ensuite je vais prendre un verre
au bistrot d'en face, ensuite je reviens...


"michdenis"
| un bouquin Excel
**** ?????

Il y a bien sûr les volumes de John Walkenbach
Il en a écrit plusieurs sur VBA et aussi sur les formules de la feuille de calcul

Il y a les bouquins de Stephen Bullen qu'il a écrit avec
différents collaborateurs selon les ouvrages.

Sur les tableaux croisés dynamiques Excel 2007, il y a
"Pivot Table Data Crunching for Microsoft® Office Excel® 2007"
Copyright © 2007 by Pearson Education, Inc.

Excel® PivotTables and Charts
By Peter G. Aitken (2006)

Excel Pivot Tables Recipe Book
A Problem-Solution Approach
DEBRA DALGLEISH (2006) (Ontarienne)
Je ne suis pas trop fervent de l'approche par
problématique -> ça dépend des goûts

Et ce forum -> on y retrouve beaucoup de suggestions
et de détails qu'on ne retrouvent jamais dans les bouquins.

Et surtout, la pratique que ce soit du code ou des formules.

Il faut avoir plusieurs bouquins d'auteurs différents car chacun
y exploite ses forces.


"garnote"
Dis donc Denis, aurais-tu un bouquin Excel à me suggérer
pour avoir accès ( ne serait-ce que très partiellement )
à ton savoir encyclopédique ?

Serge



Misange
Le #18525971
heu, y a pas de macro ;-) juste un filtre élaboré. Pour en savoir plus :
http://www.excelabo.net/excel/pap-filtreelabore.php
bonne soirée
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

vincerig a écrit :
michdenis a écrit le 29/01/2009 à 17h41 :
| Une idée ?

A ) tu ajoutes une colonne en y mettant la formule
= A2 & B2 'nom et Prénom
B) tu tries ton tableau sur à partir de cette colonne
C) Tu appliques un filtre élaboré sur cette colonne
en prenant comme critère une formule
G2:G50 colonne supposément ajoutée
zone de critère du filtre : H1:H2
h1 = tu laisses complètement vide
h2 : la formule suivante : =nb.si(G2:G50;G2)>1

Seules les enregistrements ayant au moins 2 entrées ou plus
se retrouveront dans la plage filtrée
En VBA, tu fais une boucle seulement sur les enregistrements affichés
et tu vérifies si la première cellule = la deuxième si oui
tu copies la ligne
de la deuxième ligne à côté de la première...
ainsi de suite.

Voilà pour l'idée.






"vincerig" a écrit dans le
message de groupe de discussion :

Bonjour,
Suite à une extraction de ma base de données, j'ai un tableau
excel qui
s'affiche avec en ligne le nom, le prénom, etc... le truc c'est que si
une
personne à 2 données, elle apparait sur 2 lignes.
J'ai besoin de faire un publipostage et souhaiterais donc ramener sur une


seule
ligne (en créant des colonnes) les données pour une même
personne.

Une idée ?
Merci d'avance


Merci pour cette idée !!
peux-tu expliciter la macro STP ?


Modeste
Le #18526481
Bonsour® michdenis

un bouquin Excel


Il y a bien sûr les volumes de John Walkenbach
Il en a écrit plusieurs sur VBA et aussi sur les formules de la
feuille de calcul



http://spreadsheetpage.com/index.php/blog/excel_books_for_kindle/
http://www.amazon.com/gp/search?ie=UTF8&keywords=excel&tag=jwalkass ociate&index=digital-text&linkCode=ur2&camp89&creative“25

Et ce forum -> on y retrouve beaucoup de suggestions
et de détails qu'on ne retrouvent jamais dans les bouquins.



..... ET les archives MPFE !!!!
http://groups.google.fr/group/microsoft.public.fr.excel/topics?lnk=srg& hl=fr&ie=UTF-8
http://groups.google.fr/group/microsoft.public.fr.excel/about?hl=fr

pour avoir accès ( ne serait-ce que très partiellement ) à ton savoir encyclopédique ?


;o)))
(14729 contributions)
notons au passage que le précédent record de contributions de Clément Marcotte est largement dépassé !!!!

http://groups.google.fr/groups/profile?show=more&enc_userŠueLxUAAAB QUeNiTQ76IgNwbfpua5cZ9h3i3SmjGmAJbX05nZ-8fQ&group=microsoft.public.fr.e xcel&utoken=JGs6k08AAACFxucinscy-jKtUggm_jtjyrjeJJsPxMDJcfJ9UMAzpqqqtsO pyORlct4SJZ4ht41iy1NUx1045Sc_87BHumOF0xEYHG1nWD2snqYJ5bn0Gw

+1903
http://groups.google.fr/groups/profile?show=more&enc_user=yEWn7xgAAAB jUxix_bJV3hzdOYQxU92vOf-cVaGy8Q0V4WnVANlQkQ&group=microsoft.public.fr.e xcel
michdenis
Le #18526911
Un fichier exemple :
http://cjoint.com/?bFvtZlnocG

et le code qui s'y retrouve :
'-------------------------------------
Sub Données()
Dim Rg As Range, Rg1 As Range, C As Range
Dim Mot As String, A As Integer

With Feuil1 'à adapter le nom de la feuille et la plage
'où sont les données
Set Rg = .Range("A1:D" & .Range("A65536").End(xlUp).Row)
End With

Application.ScreenUpdating = False

'Où je copie la concaténation des colonnes A & B
Set Rg1 = Rg(1, 1).Offset(, Rg.Columns.Count).Resize(Rg.Rows.Count)
With Rg1
'la copie se fait par formule
.Formula = "=" & Rg(1, 1).Address(0, 0) & "&" & Rg(1, 2).Address(0, 0)
'substitution des formules par les valeurs
.Value = .Value
End With

'boucle pour chaque cellule de la colonne (concaténation)
For Each C In Rg1
'Mot = valeur à chercher si un doublon existe.
Mot = C.Value
'Essaie de trouver si la valeur existe
Set trouve = Rg1.Find(Mot, , xlValues, xlWhole)
'Si une valeur est trouvé
If Not trouve Is Nothing Then
adr = trouve.Address
Do
'A = compteur si >1 doublons
A = A + 1
'une deuxième condition trouve.Row > C.Row
'pour ne pas compter 2 fois la même entrée
If A > 1 And trouve.Row > C.Row Then
'Détermine la colonne où copiées les datas
col = Feuil1.Cells(C.Row, 256).End(xlToLeft).Offset(, 1).Column
'Copie les data
'.Resize(, 2)-> seulement 2 colonnes de données à copier
'pas besoin de recopier le nom et le prénom
Feuil1.Cells(C.Row, col).Resize(, 2).Value = Rg(trouve.Row, 3).Resize(,
2).Value
'Rg(trouve.Row, 3).Resize(, 2).Value 'seules les
'données à partir de la colonne 3 seront recopiées,resize = 2 colonnes
' Rg1(C.Row, 2).Resize(, 2).Value = Rg(trouve.Row, 3).Resize(, 2).Value
'Efface le doublon
Rg(trouve.Row, 1).Resize(, 4).Clear
End If
Set trouve = Rg1.FindNext(trouve)
Loop Until trouve Is Nothing Or adr = trouve.Address
End If
A = 0
Next
'Supprime la colonne concaténatioin
Rg1.EntireColumn.Delete
'Supprime les entrées qui étaient en doubon
'dans la plage initiale
Rg.SpecialCells(xlCellTypeBlanks).EntireRow.Delete

End Sub
'-------------------------------------


"vincerig"
michdenis a écrit le 29/01/2009 à 17h41 :
| Une idée ?

A ) tu ajoutes une colonne en y mettant la formule
= A2 & B2 'nom et Prénom
B) tu tries ton tableau sur à partir de cette colonne
C) Tu appliques un filtre élaboré sur cette colonne
en prenant comme critère une formule
G2:G50 colonne supposément ajoutée
zone de critère du filtre : H1:H2
h1 = tu laisses complètement vide
h2 : la formule suivante : =nb.si(G2:G50;G2)>1

Seules les enregistrements ayant au moins 2 entrées ou plus
se retrouveront dans la plage filtrée
En VBA, tu fais une boucle seulement sur les enregistrements affichés
et tu vérifies si la première cellule = la deuxième si oui
tu copies la ligne
de la deuxième ligne à côté de la première...
ainsi de suite.

Voilà pour l'idée.






"vincerig" a écrit dans le
message de groupe de discussion :

Bonjour,
Suite à une extraction de ma base de données, j'ai un tableau
excel qui
s'affiche avec en ligne le nom, le prénom, etc... le truc c'est que si
une
personne à 2 données, elle apparait sur 2 lignes.
J'ai besoin de faire un publipostage et souhaiterais donc ramener sur une


seule
ligne (en créant des colonnes) les données pour une même
personne.

Une idée ?
Merci d'avance


Merci pour cette idée !!
peux-tu expliciter la macro STP ?
michdenis
Le #18526891
Tu m'as convaincu Modeste,
c'est le temps que je laisse la place à d'autres...
;-))

"Modeste"
Bonsour® michdenis

un bouquin Excel


Il y a bien sûr les volumes de John Walkenbach
Il en a écrit plusieurs sur VBA et aussi sur les formules de la
feuille de calcul



http://spreadsheetpage.com/index.php/blog/excel_books_for_kindle/
http://www.amazon.com/gp/search?ie=UTF8&keywords=excel&tag=jwalkassociate&index=digital-text&linkCode=ur2&camp89&creative“25

Et ce forum -> on y retrouve beaucoup de suggestions
et de détails qu'on ne retrouvent jamais dans les bouquins.



..... ET les archives MPFE !!!!
http://groups.google.fr/group/microsoft.public.fr.excel/topics?lnk=srg&hl=fr&ie=UTF-8
http://groups.google.fr/group/microsoft.public.fr.excel/about?hl=fr

pour avoir accès ( ne serait-ce que très partiellement ) à ton savoir encyclopédique ?


;o)))
(14729 contributions)
notons au passage que le précédent record de contributions de Clément Marcotte est
largement dépassé !!!!

http://groups.google.fr/groups/profile?show=more&enc_userŠueLxUAAABQUeNiTQ76IgNwbfpua5cZ9h3i3SmjGmAJbX05nZ-8fQ&group=microsoft.public.fr.excel&utoken=JGs6k08AAACFxucinscy-jKtUggm_jtjyrjeJJsPxMDJcfJ9UMAzpqqqtsOpyORlct4SJZ4ht41iy1NUx1045Sc_87BHumOF0xEYHG1nWD2snqYJ5bn0Gw

+1903
http://groups.google.fr/groups/profile?show=more&enc_user=yEWn7xgAAABjUxix_bJV3hzdOYQxU92vOf-cVaGy8Q0V4WnVANlQkQ&group=microsoft.public.fr.excel
Misange
Le #18527751
;-)
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

michdenis a écrit :
Un fichier exemple :
http://cjoint.com/?bFvtZlnocG

et le code qui s'y retrouve :
'-------------------------------------
Sub Données()
Dim Rg As Range, Rg1 As Range, C As Range
Dim Mot As String, A As Integer

With Feuil1 'à adapter le nom de la feuille et la plage
'où sont les données
Set Rg = .Range("A1:D" & .Range("A65536").End(xlUp).Row)
End With

Application.ScreenUpdating = False

'Où je copie la concaténation des colonnes A & B
Set Rg1 = Rg(1, 1).Offset(, Rg.Columns.Count).Resize(Rg.Rows.Count)
With Rg1
'la copie se fait par formule
.Formula = "=" & Rg(1, 1).Address(0, 0) & "&" & Rg(1, 2).Address(0, 0)
'substitution des formules par les valeurs
.Value = .Value
End With

'boucle pour chaque cellule de la colonne (concaténation)
For Each C In Rg1
'Mot = valeur à chercher si un doublon existe.
Mot = C.Value
'Essaie de trouver si la valeur existe
Set trouve = Rg1.Find(Mot, , xlValues, xlWhole)
'Si une valeur est trouvé
If Not trouve Is Nothing Then
adr = trouve.Address
Do
'A = compteur si >1 doublons
A = A + 1
'une deuxième condition trouve.Row > C.Row
'pour ne pas compter 2 fois la même entrée
If A > 1 And trouve.Row > C.Row Then
'Détermine la colonne où copiées les datas
col = Feuil1.Cells(C.Row, 256).End(xlToLeft).Offset(, 1).Column
'Copie les data
'.Resize(, 2)-> seulement 2 colonnes de données à copier
'pas besoin de recopier le nom et le prénom
Feuil1.Cells(C.Row, col).Resize(, 2).Value = Rg(trouve.Row, 3).Resize(,
2).Value
'Rg(trouve.Row, 3).Resize(, 2).Value 'seules les
'données à partir de la colonne 3 seront recopiées,resize = 2 colonnes
' Rg1(C.Row, 2).Resize(, 2).Value = Rg(trouve.Row, 3).Resize(, 2).Value
'Efface le doublon
Rg(trouve.Row, 1).Resize(, 4).Clear
End If
Set trouve = Rg1.FindNext(trouve)
Loop Until trouve Is Nothing Or adr = trouve.Address
End If
A = 0
Next
'Supprime la colonne concaténatioin
Rg1.EntireColumn.Delete
'Supprime les entrées qui étaient en doubon
'dans la plage initiale
Rg.SpecialCells(xlCellTypeBlanks).EntireRow.Delete

End Sub
'-------------------------------------


"vincerig"
michdenis a écrit le 29/01/2009 à 17h41 :
| Une idée ?

A ) tu ajoutes une colonne en y mettant la formule
= A2 & B2 'nom et Prénom
B) tu tries ton tableau sur à partir de cette colonne
C) Tu appliques un filtre élaboré sur cette colonne
en prenant comme critère une formule
G2:G50 colonne supposément ajoutée
zone de critère du filtre : H1:H2
h1 = tu laisses complètement vide
h2 : la formule suivante : =nb.si(G2:G50;G2)>1

Seules les enregistrements ayant au moins 2 entrées ou plus
se retrouveront dans la plage filtrée
En VBA, tu fais une boucle seulement sur les enregistrements affichés
et tu vérifies si la première cellule = la deuxième si oui
tu copies la ligne
de la deuxième ligne à côté de la première...
ainsi de suite.

Voilà pour l'idée.






"vincerig" a écrit dans le
message de groupe de discussion :

Bonjour,
Suite à une extraction de ma base de données, j'ai un tableau
excel qui
s'affiche avec en ligne le nom, le prénom, etc... le truc c'est que si
une
personne à 2 données, elle apparait sur 2 lignes.
J'ai besoin de faire un publipostage et souhaiterais donc ramener sur une


seule
ligne (en créant des colonnes) les données pour une même
personne.

Une idée ?
Merci d'avance


Merci pour cette idée !!
peux-tu expliciter la macro STP ?



Publicité
Poster une réponse
Anonyme