Appariement : mettre des lignes les unes à côté des autres
Fermé
borisparis
Messages postés
79
Date d'inscription
vendredi 21 août 2015
Statut
Membre
Dernière intervention
9 août 2023
-
30 oct. 2017 à 21:37
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 2 nov. 2017 à 22:55
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 2 nov. 2017 à 22:55
6 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
Modifié le 30 oct. 2017 à 22:12
Modifié le 30 oct. 2017 à 22:12
Bonjour,
tu devrais ajouter une feuille avec le résultat attendu.
Parce là...
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
tu devrais ajouter une feuille avec le résultat attendu.
Parce là...
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
borisparis
Messages postés
79
Date d'inscription
vendredi 21 août 2015
Statut
Membre
Dernière intervention
9 août 2023
1
30 oct. 2017 à 22:20
30 oct. 2017 à 22:20
Effectivement,
voici un fichier plus clair
premier feuillet, une base de donnée
deuxième feuillet la requête (lignes à juxtaposer)
troisième feuillet le résultat attendu
Merci de votre aide
voici un fichier plus clair
premier feuillet, une base de donnée
deuxième feuillet la requête (lignes à juxtaposer)
troisième feuillet le résultat attendu
Merci de votre aide
borisparis
Messages postés
79
Date d'inscription
vendredi 21 août 2015
Statut
Membre
Dernière intervention
9 août 2023
1
30 oct. 2017 à 23:20
30 oct. 2017 à 23:20
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 712
30 oct. 2017 à 23:13
30 oct. 2017 à 23:13
Bonjour,
voici un fichier plus clair surtout absent !
Alors avec ce que j'ai compris, regardes si cette macro correspond à ton attente.
tu adaptes la plage des apparients à ton classeur.
voici un fichier plus clair surtout absent !
Alors avec ce que j'ai compris, regardes si cette macro correspond à ton attente.
Public Sub apparients() Dim lig As Long, col As Integer Dim cel As Range, pos As Range, Tba Tba = Range("a29:c31").Value ' plage des apparients For lig = 1 To UBound(Tba) Set pos = Cells.Find(Tba(lig, 1)) If Not pos Is Nothing Then For col = UBound(Tba, 2) To 2 Step -1 Set cel = Cells.Find(Tba(lig, col)) If Not cel Is Nothing Then Rows(pos.Row + 1).Insert Rows(cel.Row).Cut Destination:=Rows(pos.Row + 1) Rows(pos.Row + 1).Interior.Pattern = xlGray16 End If Next col End If Next lig End Sub
tu adaptes la plage des apparients à ton classeur.
borisparis
Messages postés
79
Date d'inscription
vendredi 21 août 2015
Statut
Membre
Dernière intervention
9 août 2023
1
30 oct. 2017 à 23:27
30 oct. 2017 à 23:27
excuses moi mais je suis un peu nul et je ne sais pas faire fonctionner la macro avec mon fichier.
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 712
31 oct. 2017 à 09:07
31 oct. 2017 à 09:07
Bonjour,
Dans ton classeur tu actives la feuille concernée,
tu ouvres l'éditeur VBA (alt+F11)
Menu insertion / module
Tu copies la macro et tu la colles dans le module
tu modifies ta plage des apparients avec l'adresse concernée dans ton classeur
avec ta sélection dans la macro tu utilises la touche F5
et tu regardes le résultat.
S'il ne te convient pas tu ne sauvegarde pas.
Voilà ton classeur exemple : https://www.cjoint.com/c/GJFig5eYnil
Dans ton classeur tu actives la feuille concernée,
tu ouvres l'éditeur VBA (alt+F11)
Menu insertion / module
Tu copies la macro et tu la colles dans le module
tu modifies ta plage des apparients avec l'adresse concernée dans ton classeur
avec ta sélection dans la macro tu utilises la touche F5
et tu regardes le résultat.
S'il ne te convient pas tu ne sauvegarde pas.
Voilà ton classeur exemple : https://www.cjoint.com/c/GJFig5eYnil
borisparis
Messages postés
79
Date d'inscription
vendredi 21 août 2015
Statut
Membre
Dernière intervention
9 août 2023
1
>
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
31 oct. 2017 à 22:43
31 oct. 2017 à 22:43
Ce qui est fait correspond à ce que je veux saufune chose: je voudrais avoir les lignes appariés sur la même ligne que la première. Dans l'exemple : la ligne 2 et la ligne 3 sur la même ligne que la ligne 1; la ligne 6 et la ligne 7 après la ligne 5...
Merci de ton aide.
Merci de ton aide.
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 712
1 nov. 2017 à 08:51
1 nov. 2017 à 08:51
Bonjour,
je voudrais avoir les lignes appariés sur la même ligne que la première.
Je voudrais juxtaposer automatiquement certaines lignes avec d'autres.
Si l'on rapproche tes demandes tu avoueras que leur formulation n'est point du même ordre. ;-)
Voilà ta macro modifiée et son classeur test
https://www.cjoint.com/c/GKbhYhfnwMl
je voudrais avoir les lignes appariés sur la même ligne que la première.
Je voudrais juxtaposer automatiquement certaines lignes avec d'autres.
Si l'on rapproche tes demandes tu avoueras que leur formulation n'est point du même ordre. ;-)
Voilà ta macro modifiée et son classeur test
Public Sub apparients() Dim lig As Long, col As Integer, mxc As Integer, pcl As Integer Dim cel As Range, pos As Range, Tba Tba = Range("a29:c31").Value ' plage des apparients mxc = ActiveSheet.UsedRange.Columns.Count For lig = 1 To UBound(Tba) Set pos = Cells.Find(Tba(lig, 1)) If Not pos Is Nothing Then pcl = 1 For col = 2 To UBound(Tba, 2) Set cel = Cells.Find(Tba(lig, col)) If Not cel Is Nothing Then pcl = pcl + mxc Cells(cel.Row, 1).Resize(1, mxc).Cut Destination:=Cells(pos.Row, pcl) End If Next col End If Next lig End Sub
https://www.cjoint.com/c/GKbhYhfnwMl
borisparis
Messages postés
79
Date d'inscription
vendredi 21 août 2015
Statut
Membre
Dernière intervention
9 août 2023
1
Modifié le 1 nov. 2017 à 11:02
Modifié le 1 nov. 2017 à 11:02
D'abord 1000 excuses de ne pas être clair.
J'ai essayé mais pour le moment je n'y arrive pas. Il doit y avoir un truc que je ne comprends pas .
Dans le fichier ci dessous j'ai mis une base de donnée allégée de celle que j'ai (quelques colonnes seulement)
https://www.cjoint.com/c/GKbj718X1ZV
En bas j'ai mis les 3 colonnes correspondants à ce qu'il faut apparier.
Quand je fais tourner la macro en ayant mien bien la plage a1862:c101413 je ne comprends pas ce qui est fait
J'ai essayé mais pour le moment je n'y arrive pas. Il doit y avoir un truc que je ne comprends pas .
Dans le fichier ci dessous j'ai mis une base de donnée allégée de celle que j'ai (quelques colonnes seulement)
https://www.cjoint.com/c/GKbj718X1ZV
En bas j'ai mis les 3 colonnes correspondants à ce qu'il faut apparier.
Quand je fais tourner la macro en ayant mien bien la plage a1862:c101413 je ne comprends pas ce qui est fait
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
borisparis
Messages postés
79
Date d'inscription
vendredi 21 août 2015
Statut
Membre
Dernière intervention
9 août 2023
1
2 nov. 2017 à 00:40
2 nov. 2017 à 00:40
j'ai corrigé mon erreur pour la base allégée (c'est évidemment dans la "plage des appariés")
Mais le problème persisite dans ma base complète. Il y a plusieurs lignes ou les données de la première personne disparaissent.
Mais le problème persisite dans ma base complète. Il y a plusieurs lignes ou les données de la première personne disparaissent.
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 712
2 nov. 2017 à 09:39
2 nov. 2017 à 09:39
Bonjour,
Il y a plusieurs lignes ou les données de la première personne disparaissent.
Comme la macro ne supprime aucune donnée il ne peut y avoir de disparition !
Par contre "les données de la première personne que tu ne vois plus sont sans doute appariées sur une autre ligne.
c'est évidemment dans la "plage des appariés", comme tu dis qu'il se trouve des incohérences.
Il y a plusieurs lignes ou les données de la première personne disparaissent.
Comme la macro ne supprime aucune donnée il ne peut y avoir de disparition !
Par contre "les données de la première personne que tu ne vois plus sont sans doute appariées sur une autre ligne.
c'est évidemment dans la "plage des appariés", comme tu dis qu'il se trouve des incohérences.
borisparis
Messages postés
79
Date d'inscription
vendredi 21 août 2015
Statut
Membre
Dernière intervention
9 août 2023
1
>
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
2 nov. 2017 à 12:06
2 nov. 2017 à 12:06
Effectivement la ligne effacée se retrouve à côté d'une autre comme une appariée. Mais la ou c'est mais ne correspond pas à ce qui est dans les 3 colonnes de requêtes. C'est pour cela que je ne comprends pas.
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 712
2 nov. 2017 à 22:06
2 nov. 2017 à 22:06
Bonsoir,
Tu peux essayer cette nouvelle version qui te permettra de voir le souci j'espère
Tu peux essayer cette nouvelle version qui te permettra de voir le souci j'espère
Public Sub apparients() Dim lig As Long, lgs As Long, col As Integer, mxc As Integer, pcl As Integer Dim cel As Range, pos As Range, Tba Tba = Range("Feuil1!A29:C31").Value ' plage des apparients mxc = ActiveSheet.UsedRange.Columns.Count For lig = 1 To UBound(Tba) Set pos = Columns(1).Find(Tba(lig, 1)) If Not pos Is Nothing Then pcl = 1 For col = 2 To UBound(Tba, 2) Set cel = Columns(1).Find(Tba(lig, col), [A1]) If Not cel Is Nothing Then pcl = pcl + mxc: lgs = cel.Row Cells(cel.Row, 1).Resize(1, mxc).Cut Destination:=Cells(pos.Row, pcl) Cells(lgs, 1) = Tba(lig, col) End If Next col End If Next lig End Sub
borisparis
Messages postés
79
Date d'inscription
vendredi 21 août 2015
Statut
Membre
Dernière intervention
9 août 2023
1
2 nov. 2017 à 22:22
2 nov. 2017 à 22:22
Cette fois-çi ca fonctionne parfaitement !
je ne sais pas la différence mais ca marche !
je ne sais pas la différence mais ca marche !
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 712
2 nov. 2017 à 22:55
2 nov. 2017 à 22:55
C'est tant mieux que cela fonctionne : le positionnement ne se faisait sans doute pas correctement.
Bonne utilisation !
Bonne utilisation !