Décaler ensemble de cellule si valeur non identique

Bonjour le forum ,

J'ai besoin d'aide pour créer un code VBA.

J'ai tenter via une formule matricielle mais je pense que seul VBA pourra m'aider.

J'ai deux liste de code (environs 5000 code différents) en colonne A et B.

J'ai besoin que pour chaque ligne, si le texte de la colonne B n'est pas identique à la colonne A, sélectionner toutes les cellules de la colonne B à partir de la cellule concerné, puis tout décaler d'une case vers le bas.

Donc si par exemple > =si(B2=A2;B2; DECALER) Grossièrement c'est ce que je souhaite.

Si vous pouvez m'aider , sous VBA ou même sous forme de formule ce serai parfait.

Je cherche une solution pendant ce temps.

Merci d'avance !

Bonjour,

Avec VBA car une fonction Excel ne peut faire aucune action, elle retourne une valeur ou un tableau de valeurs (dans ce cas, elles est matricielle) :

Sub Test()

    Dim Lig As Long
    Dim I As Long

    With ActiveSheet: Lig = .Cells(.Rows.Count, 1).End(xlUp).Row: End With 'plage sur la colonne A de la feuille active

    For I = Lig To 1 Step -1

        If Cells(I, 1).Value <> Cells(I, 2).Value Then Cells(I + 1, 1).EntireRow.Insert xlShiftDown, False

    Next I

End Sub

Merci pour la réponse !

Le code ne fonctionne pas correctement car il ne procède pas au décalage à chaque fois.

regarde le fichier test.

6test.xlsm (17.83 Ko)

Je viens de tester et ça fonctionne !

Essais en pas à pas (appuis successif sur la touche F8) avec les fenêtres cote à cote j'ai un peu modifier le code pour le pas prendre en compte les entêtes :

Sub Test()

    Dim Lig As Long
    Dim I As Long

    With ActiveSheet: Lig = .Cells(.Rows.Count, 1).End(xlUp).Row: End With 'plage sur la colonne A de la feuille active

    For I = Lig - 1 To 2 Step -1

        If Cells(I, 1).Value <> Cells(I, 2).Value Then Cells(I + 1, 1).EntireRow.Insert xlShiftDown, False

    Next I

End Sub

Regarde sur le fichier joint>.

En ligne 28 par exemple, le code en colonne a et b ne sont pas identique et pourtant ils sont encore aligné.

6test.xlsm (19.50 Ko)

Re,

...si par exemple > =si(B2=A2;B2; DECALER) Grossièrement c'est ce que je souhaite...

Effectivement, comme la procédure exécute une action, elle ne retourne pas de valeur donc, seulement "DECALER" esgt exécuté !

Avec une MFC en jaune pour les valeurs A<>B et une MFC en bleu pour les cellules vides et A=B il y a bien une ligne bleu sous chaque ligne jaune une fois la procédure exécutée !

Ton classeur en retour :

7retour-test.xlsm (17.26 Ko)

Oui je comprend. Mais j'ai besoin que sur chaque ligne seulement si la valeur A et B d'une même ligne est identique. Si A et B ne sont pas identique, il faut qu'en B il y ai un vide.

Sans pour autant ajouter un espace dans la colonne A.

Personne d'autre pour m'aider ?

Bonjour,

Donc, tu veux supprimer la valeur de B ou insérer une cellule car dans ce cas, les valeurs ne seront plus "alignées" !

Bonjour, je souhaite que par exemple dans la ligne 2, que si le code en a2 et b2 sont identique , que ça reste mais que si b2 est différent de A2 alors décaler vers le bas toutes les cellules de la colonne B à partir de la cellule concerné, jusqu'en bas des données de la colonne B.

Pour faire en sorte que sur une même ligne (exemple ligne 2) la colonne A et B soit non vide à partir du moment où ils sont identique.

Si un code en A n'est pas le même qu'en B alors sur une même ligne ils ne doivent pas être aligné.

Rechercher des sujets similaires à "decaler ensemble valeur identique"