Trier 2 colonnes et mettre, décaler sur la bonne rangée les cellules identi

Bonjour

je souhaite comparer 2 colonnes Noms Montants avec 2 autres colonnes Noms Montant pour pouvoir ensuite voir ou il y a des écarts dans les montants pour les mêmes noms. Sauf qu'avant il faut que je puisse trier et surtout ranger les mêmes noms. Je vous met en pj un exemple. Par avance merci, j'ai 1000 salariés et quend j'aid es entrées ou des sorties faire à la main les décalages de celulles devient chronophage.

A partir de 2 colonnes Nom Montant on veut que ce soit trié par Nom colonnes jaunes et colonnes vertes que les noms égaux soit aux mêmes rangées pour qu'ensuite on puisse calculer les écarts ds la colonne Ctrl
NomMontantNomMontantCtrlON VEUT NomMontantNomMontantCtrl
A1A10A1A10
B2C3 B2 -2
C3F6 C3C30
D4G7 D4 -4
E5 E5 -5
F6 F6F60
G7 G7G70
H8 H8

Bonjour,

Une RECHERCHEV entre deux tables me semble plus adaptée. En C2 puis en tirant vers le bas :

=SIERREUR(RECHERCHEV(A2;$D$2:$E$9;2;FAUX);"")

Ainsi seul le montant présent dans votre table verte correspondant au nom de la table jaune est renvoyée. Si il n'y a pas de correspondance, alors la RECHERCHEV renvoie une erreur, transformé en vide "" via la fonction SIERREUR. D2:E9 est la matrice verte dans laquelle vous souhaitez faire votre recherche, et le 2 est le numéro de colonne à renvoyer au sein de cette matrice. Ici on cherche à renvoyer la colonne E, qui est la deuxième colonne de notre matrice D:E.

Cdlt,

bonjour merci beaucoup pour ce retour

mais il faudrait que ca me décale la ligne complète en fait, dans mon exemple il faudrait que les lignes D3 E3 se retrouvent en ligne D4 E4

merci d'avance

Bonjour,

Même si je ne comprend pas, ci-contre un code donnant le résultat escompté :

Sub TRI()
Dim LR&, L&, LF&
With Worksheets("Feuil2")
    LR = .Cells(.Rows.Count, 4).End(xlUp).Row 'Défini la dernière ligne colonne D
    For L = LR To 2 Step -1 'Pour les lignes entre LR et 2
        LF = .Columns(1).Find(.Cells(L, 4)).Row 'Renvoie la ligne équivalente de la valeur cherchée de la colonne D dans la colonne A
        If LF <> L Then 'Si la ligne d'équivalence n'est pas la même
            .Cells(L, 4).Resize(, 2).Copy 'On la plage D:E de la ligne L
            .Cells(LF, 4).PasteSpecial xlPasteValues On la colle en valeur sur la ligne d'équivalence
            .Cells(L, 4).Resize(, 2).ClearContents 'On supprime les valeur de la plage D:E de la ligne L
        End If
    Next L 'Passe à L suivant
End With
End Sub

Cdlt,

Bonjour !

Vous devriez renseigner, dans votre profil, la version Excel.

Une proposition via Power Query :

merci beaucoup JF c'est exactement ce que je chercher à faire

mais je le déclenche comment, je ne connais pas Power Query

version d'excel:

image

Ergotamine je n'arrive pas à faire fonctionner la macro :(

merci

Bonjour,

Je me suis rendu compte qu'un commentaire était mal placé désolé :

Sub TRI()
Dim LR&, L&, LF&
With Worksheets("Feuil2")
    LR = .Cells(.Rows.Count, 4).End(xlUp).Row 'Défini la dernière ligne colonne D
    For L = LR To 2 Step -1 'Pour les lignes entre LR et 2
        LF = .Columns(1).Find(.Cells(L, 4)).Row 'Renvoie la ligne équivalente de la valeur cherchée de la colonne D dans la colonne A
        If LF <> L Then 'Si la ligne d'équivalence n'est pas la même
            .Cells(L, 4).Resize(, 2).Copy 'On la plage D:E de la ligne L
            .Cells(LF, 4).PasteSpecial xlPasteValues 'On la colle en valeur sur la ligne d'équivalence
            .Cells(L, 4).Resize(, 2).ClearContents 'On supprime les valeur de la plage D:E de la ligne L
        End If
    Next L 'Passe à L suivant
End With
End Sub

Si ça ne fonctionne pas merci de détailler ce qui ne fonctionne pas.

Cdlt,

Bonsoir !

mais je le déclenche comment, je ne connais pas Power Query

L'outil Power Query est intégré à Excel depuis la version.... 2016 ! Pour votre version 2010, vous devrez télécharger et installer le complément (gratuit) de Microsoft.

Bonjour Ergotamine c'est parfait tip top ca fonctionne merci beaucoup !!

Bonjour Ergotamine

ce matin je veux tester avec un bout de ficher de prod et j'ai une erreur. je devrais avoir un décalage auto pour la ligne surligné orange (D32).Je vous joins mon fichier. par avance merci bcoup

image

Bonjour,

C'est normal vos données ne sont pas propres et pas présentées de la même façon que le tableau que vous nous avez fourni. Par exemple :

- Où trouve-t-on BELOT LUCIE sous la colonne A ? Comment gère-t-on ce cas ?
- Où trouve-t-on BELLOT CATHERINE avec un espace à la fin (D37) dans la colonne A où BELLOT Catherine est inscrite avec un espace au début ? (A38) ?

Je vous laisse méditer sur ces 2 seuls cas, je n'ai pas regardé le reste. Mais je vois des cas avec des accents en A, pas d'accent en D, etc ... Donc le chemin est encore long pour vous avant d'avoir une quelconque équivalence.

Cdlt,

bonjour ok je vous remercie

Bonjour Egrotamine

je vous embête encore du coup je passe avec des matricules pour ne pas avoir les soucis de majuscules accents etc etc et je bloque aussi :(

si vous pouviez me dire pourquoi je cous remercie par avance. Fichier en pj

Bonjour,

Vos données n'étant plus triées par ordre alphanumérique la méthode n'est plus la même. Une alternative en passant par un array :

Sub TRI()
Dim LR&, L&, LF As Range, COR()
With Worksheets("Feuil2")
    LR = .Cells(.Rows.Count, 4).End(xlUp).Row
    ReDim COR(0 To LR, 0 To 1)
    For L = 2 To LR
        Set LF = .Columns(4).Find(.Cells(L, 1))
        If LF Is Nothing Then
            COR(L - 2, 0) = ""
            Else
            COR(L - 2, 0) = .Cells(LF.Row, 4)
            COR(L - 2, 1) = .Cells(LF.Row, 5)
        End If
    Next L
    .Range("D2:E" & LR).ClearContents
    .Range("D2").Resize(UBound(COR, 1) + 1, 2) = COR
End With
End Sub

Cdlt,

super merciiiii beaucoup :)

Rechercher des sujets similaires à "trier colonnes mettre decaler bonne rangee identi"