Faire correspondre des valeurs

Bonjour tout le monde,

J'ai une question sur Excel, j'ai une liste de valeur en colonne A et des valeurs dans les colonnes B à R. J'aimerais que les valeurs des colonnes B à R se rangent automatiquement en face de la valeur correspondante dans la colonne A. J'ai essayé le tri par ordre croissant le problème étant que beaucoup de cellules sont vides.

excel forum

Voilà une image des données que j'ai à trier, vous remarquerez que beaucoup de cellules sont vides dans mon tableau. Toutes les valeurs ont leur double dans la colonne A mais certaines valeur contenues dans la colonne A n'auront rien en face d'elle.

Le but final étant que SI dans mes colones A à B il y a une valeur "1015" et bien il faut que cette valeure se retrouve en face de la ligne "1015" de ma colonne A.

C'est la première fois que je poste sur ce forum j'ai fais au mieux pour expliquer mon besoin le plus clairement possible et j'espère que comprendrez.

(Le nom du document, le nom des feuilles, mon nom, et un module complémentaire sont floutés pour des soucis de confidentialité, je ne pense pas que ces infos soient réellement importante pour résoudre mon problème)

Bonjour,

Petite macro pour faire cela

Sub Tri()
    Dim DerLig As Long, DerCol As Long, C As Long
    Application.ScreenUpdating = False
    DerLig = Range("A" & Rows.Count).End(xlUp).Row
    DerCol = Range("A1").End(xlToRight).Column
    For C = 2 To DerCol
        DerLig = Cells(Rows.Count, "A").End(xlUp).Row
        'on copie la colonne à traiter en colonne S
        Range("B1:B4").Select
        Range(Cells(1, C), Cells(DerLig, C)).Cut
        Range("S1").Select
        ActiveSheet.Paste
        Range(Cells(1, C), Cells(DerLig, C)).FormulaR1C1 = "=IF(ISERR(MATCH(RC1,R1C19:R4C19,0)),0,RC1)"
        Range(Cells(1, C), Cells(DerLig, C)).Value = Range(Cells(1, C), Cells(DerLig, C)).Value
        Columns(19).Clear
    Next C
End Sub

Cdlt

Merci beaucoup Arturo,

Voilà ce que j'obtient en exécutant la macro :

test macro

La colonne A a remplacé les autres colonnes.

C'est n'est pas ce à quoi je m'attendais après j'ai peut-être mal exécuter la Macro, je connais bien les fonction basiques d'Excel mais je ne connais rien aux Macros etc...

Voilà comment j'ai enregistré votre script :

macro

Merci encore pour votre réponse même si cela ne correspond pas à mes attentes.

(je ne critique pas votre travail je répond juste de manière objective)

Oui petite erreur de formule

Sub Tri()
    Dim DerLig As Long, DerCol As Long, C As Long
    Application.ScreenUpdating = False
    DerLig = Range("A" & Rows.Count).End(xlUp).Row
    DerCol = Range("A1").End(xlToRight).Column
    For C = 2 To DerCol
        DerLig = Cells(Rows.Count, "A").End(xlUp).Row
        'on copie la colonne à traiter en colonne S
        Range("B1:B4").Select
        Range(Cells(1, C), Cells(DerLig, C)).Cut
        Range("S1").Select
        ActiveSheet.Paste
        Range(Cells(1, C), Cells(DerLig, C)).FormulaR1C1 = "=IFERROR(IF(MATCH(RC1,R1C19:R4C19,0)>0,RC1,""""),"""")"
        Range(Cells(1, C), Cells(DerLig, C)).Value = Range(Cells(1, C), Cells(DerLig, C)).Value
        Columns(19).Clear
    Next C
End Sub

Arturo,

Cette fois-ci je ne saurais expliquer le problème je vous laisse une capture d'écran pour voir le résultat obtenu.

2 macro

Merci encore pour votre aide.

[SOLUTION]

Voici la solution que j'ai trouvée elle est un peu archaïque mais ça marche...

Etape 1 :

etape 1

Vous avez vu que j'ai entré cette formule :

=SI(NB.SI(B:B;A2)=0;"";A2)

Elle permet de comparer la colonne A à la colonne B en procédant ligne par ligne.

Une fois que la formule est entrée sur la première lige vous pouvez l'appliquer à toutes les autres lignes avec la poignée de recopie. Vous obtiendrez donc votre colonne B mais triée.

Etape 2:

Vous appliquez cette formule aux autres colonnes. Je vous conseille de mettre le même nom de colonne sur celles triées (ici il est flouté mais vous avez compris, par exemple si votre colonne à trier se nomme "Babar" en B1 renommez votre colonne triée "Babar" en F1)

capture d ecran 2021 07 08 153134

Attention : Vous ne pouvez pas recopier rapidement la formule avec la poignée de recopie car il n'y a que la colonne à trier qui change:

Par conséquent la formule qui triera la colonne C en G est :

=SI(NB.SI(C:C;A2)=0;"";A2)

Après vous pouvez recopier cette formule sur toutes les lignes de la colonne et ainsi de suite pour les prochaine colonnes.

Dernière Etape :

Il ne vous reste plus qu'à cacher les colonnes à trier (orange), il ne faut pas les supprimer sinon la formule ne sera plus valable, après vous pouvez toujours copier puis coller les valeurs, supprimer les colonnes à trier et triées et ne garder que les valeurs recopiées, mais bon c'est long et ça ne sert pas à grand chose.

capture d ecran 2021 07 08 154424

J'espère que cette solution est claire et bien expliquée, si elle ne l'est pas n'hésitez pas à me poser des questions et si quelqu'un à une solution moins laborieuse je prends avec plaisir.

Votre message 6:
Cette fois-ci je ne saurais expliquer le problème je vous laisse une capture d'écran pour voir le résultat obtenu.
Je pense que la feuille n'était pas vidée des résultats précédents et les valeurs qui apparaissent n'ont pas été supprimées avant la nouvelle exécution de la macro.
Mais comme je ne dispose pas de fichier qui ressemble au votre , je ne fais que des suppositions. Si vous aviez déposé une copie de votre fichier, nous aurions gagné du temps.

Arturo,

Effectivement je n'y ai pas pensé ça aurait probablement facilité les choses.

Merci beaucoup pour votre aide.

Rechercher des sujets similaires à "correspondre valeurs"