VBA - Comparaison deux facteurs + Suppresion cellules C si facteurs A et B différents

  • Initiateur de la discussion Initiateur de la discussion Mr.Nobody
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Mr.Nobody

XLDnaute Nouveau
Bonjour,


Merci d'avance pour vos réponses.

Je vous explique mon problème,

Je souhaite créer une macro qui pourra m'aider à comparer deux éléments et agir en conséquence.

Je vous donne un exemple :

Colonne A : Evenement A
Colonne B: Evenement B
Colonne C : Données lié à B
Colonne D: Données lié à B


Je souhaite donc une macro qui :

1) Comparer les infos en A et B,
2) Si A = B alors passer à la ligne et refaire la comparaison.
3) Si A =/ B alors supprimer les cellules ( vers le haut ) en C et D correspondantes à la ligne.


Pour effectuer cela je suis parti sur ce type de macro :

Sub suppr()
'la boucle generale
For a = 1 To 31
'premiere boucle comparaison
effacer = False
i = a
Do While effacer = False And Cells(i, 1).Value <> ""
If Cells(i, 1).Value <> Cells(i, 2).Value Then

Cells(i, 2).Value = ""

effacer = True

End If
i = i + 1
Loop
'Seconde boucle qui fait les decalages
Do While Cells(i, 6).Value <> ""

Cells(i, 2).Value = Cells(i + 1, 2).Value
Loop
'Bonus : couleur cellules si cellules en A = cellules en B
Cells(a, 1).Interior.ColorIndex = 4
Next a



End Sub

Avec ceci, la macro supprime bien les infos en C et D mais suppriment également toutes les infos qui suivent dans ces colonnes mais le " décalage " des cellules vers le haut ne s'effectue pas. Et du coup ça ne vérifie pas " ligne par ligne ".


Pouvez-vous m'apporter une suggestion?

Bien cordialement,
 
Re : VBA - Comparaison deux facteurs + Suppresion cellules C si facteurs A et B diffé

Bonjour Mr.Nobody et bienvenu, bonjour le forum,

Puisque tu es nouveau parmi nous je te recommande de lire la
Lien supprimé du forum. Elle donne tous les bons plans pour obtenir une réponse rapidement. Dans ton cas le problème est l'absence de fichier exemple. Tes explications sont longues et manquent cruellement d'un visuel pour mieux comprendre.

Je te propose à tout hasard le code ci-dessous :
Code:
Public Sub Macro1()
Dim dl As Integer

dl = Cells(Application.Rows.Count, 1).End(xlUp).Row
For i = 1 To dl
    If Cells(i, 1) <> Cells(i, 2) Then
        Cells(i, 3).Value = Cells(i + 1, 3).Value
        Cells(i, 4).Value = Cells(i + 1, 4).Value
    Else
        Cells(i, 1).Interior.ColorIndex = 4
    End If
Next i
End Sub
 
Re : VBA - Comparaison deux facteurs + Suppresion cellules C si facteurs A et B diffé

Bonjour Robert,

Merci de ta réponse. Après une légère modification ton code me donne exactement ce que je veux ! Mes lignes " non identiques" remontent bien vers le haut.

Cependant, seul petit détail, je suis obliger de cliquer plusieurs fois sur la macro pour qu'elle supprime toutes les lignes.

C'est pour cela que j'étais parti sur une boucle " Do... While...Loop".

Est-ce possible d'intégrer ce bout de macro en boucle et de la stopper une fois toutes les lignes ok?


Cordialement,
 
Re : VBA - Comparaison deux facteurs + Suppresion cellules C si facteurs A et B diffé

Bonjour le fil, bonjour le forum,

Peut-être en inversant la boucle :
Code:
Public Sub Macro1()
Dim dl As Integer

dl = Cells(Application.Rows.Count, 1).End(xlUp).Row
For i = dl To 1 step -1
    If Cells(i, 1) <> Cells(i, 2) Then
        Cells(i, 3).Value = Cells(i + 1, 3).Value
        Cells(i, 4).Value = Cells(i + 1, 4).Value
    Else
        Cells(i, 1).Interior.ColorIndex = 4
    End If
Next i
End Sub
 
Re : VBA - Comparaison deux facteurs + Suppresion cellules C si facteurs A et B diffé

Merci pour cette ajustement. J'ai pu trouver mon bonheur pour cette partie.

Cependant, j'ai juste un dernier soucis avec ma macro...

Ce n'est pas le même sujet, je m'explique :


A la base de cette macro je fais une recherche par critère pour copier les infos à la suite dans une autre feuille avec une boucle .find de tel sorte :


Set ball = onglethandicap.Columns("C").Find("A")


'Copie des informations ------------------------------------------------------------


If Not ball Is Nothing Then
premiereAdresse = ball.Address
Do

ongletbasket.Range("H" & ongletbasket.Rows.Count).End(xlUp).Offset(1, 0).Value = onglethandicap.Range("F" & ball.Row)
ongletbasket.Range("B" & ongletbasket.Rows.Count).End(xlUp).Offset(1, 0).Value = onglethandicap.Range("A" & ball.Row)


Set ball = onglethandicap.Columns("C").FindNext(ball)
Loop Until ball.Address = premiereAdresse
End If '---------------------------------------------------------

De tel sorte, si je trouve la lettre "A" dans la feuille1 alors je copie les infos en F et A dans ma feuille2 en H et B.



En réalité j'aimerai ajouter un second critère de type " OU " pour que ma recherche affiche à la suite les deux types de lignes trouvées.

Concrètement, au lieu d'un seul critère A j'aimerai ajouter un second B >

Recherche. ( A OU B) alors copie infos en feuill2 à la suite selon la recherche A ou la recherche B.

J'ai essayé plusieurs choses pour arriver à cela mais je n'y arrive pas...

Est-ce possible de faire un .find à deux critères "ou" ?

Merci d'avance.
 
Re : VBA - Comparaison deux facteurs + Suppresion cellules C si facteurs A et B diffé

Bonjour Mr Nobody, bonjour ke forum,

Une solution qui va ralentir certainement la macro. Une boucle sur toutes les cellules avec une condition du type :
Code:
Dim cel As Range
For Each cel In Range("Ta_plage")
     If cel.Value = "A" Or cel.Value = "B" then ...
Next cel
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
707
Réponses
8
Affichages
649
Réponses
7
Affichages
362
Réponses
5
Affichages
568
Retour