Boucle de vérification par comparaison

Bonjour à toutes et à tous,

Déjà merci d'exister, disciples de VBA et traducteurs savants, conciliateurs de la fonction et de la condition j'invoque votre aide!

Voici un lien vers ma présentation si vous souhaitez savoir d'où je débarque : https://forum.excel-pratique.com/viewtopic.php?f=29&t=131883, sinon pour résumer moi avoir questions pour parler excel, beaucoup.

Pour faire bref, je cherche à créer une boucle de vérification qui comparerait deux colonnes ligne par ligne et qui m'afficherait un petit message d'erreur dans le cas où le contenu des deux cases comparées (principalement du texte mais peut être variable en cas d'erreur) serait différent.

Alors je vous cache pas que j'ai l'impression d'avoir déjà fait des trucs vachement plus compliqué jusqu'à présent mais je bloque grave sur cette boucle (c'est ma première boucle).

Voici le monstre :

Sub verification() Dim DATAreference As String Dim DATAimport As Variant Dim i As Integer i = 4 DATAreference = ThisWorkbook.Worksheets(1).Cells(i, 3).Value DATAimport = ThisWorkbook.Worksheets(1).Cells(i, 5).Value While DATAreference = DATAimport i = i + 1 DATAreference = ThisWorkbook.Worksheets(1).Cells(i, 3).Value DATAimport = ThisWorkbook.Worksheets(1).Cells(i, 5).Value If Not DATAreference = DATAimport Then MsgBox ("il y a une erreur à la ligne " & i) Exit Sub End If Wend End Sub

Edit: je venais à peine de poster mon message que je me suis rendu compte que je n'avais pas intégré la msgbox au code et en réécrivant une énième fois ce code j'ai tenté une petite variante et ça marche, bref ce programme fonctionne!!

Du coup, peut-être auriez vous une autre manière de l'écrire? Avec une autre boucle?

Je prend tout les conseils d'amélioration! Merci

Bonjour Batou, bonjour le forum,

Une autre approche :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable D (Dernière Ligne)
Dim TV As Integer 'déclare la variable TV (Tableau des Valeurs)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, "C").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne C de l'onglet O
TV = O.Range("C4:D" & DL) 'définit le tableau des valeurs TV
For I = I To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs
    If CStr(TV(I, 1)) <> CStr(TV(I, 3)) Then 'condition : si la donnée ligne colonne 1 de TV est différente de la donnée ligne I colonne 3 de TV (les deux converties en texte)
        O.Cells(I + 3, "C").Select 'sélectionne la cellule ligne I+3, colonne C de l'onglet O
        MsgBox "Ligne différente !" 'message
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
End Sub

Bonjour à tous,

@ThauThème : ici, sur Excel 2016, TV ne fonctionne pas.

ric

Re,

Tu as tout à fait raison Ric et c'est de ma faute. Il faut déclarer TV comme Variant !...

Il faut remplacer :

Dim TV As Integer 'déclare la variable TV (Tableau des Valeurs)

par :

Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)

Bonjour à tous,

Même là, ça cale plus loin...

Ceci fonctionne chez-moi ...

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable D (Dernière Ligne)
Dim TV() 'As Integer 'déclare la variable TV (Tableau des Valeurs)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, "C").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne C de l'onglet O
ReDim TV(0 To DL - 4, 1 To 3)
TV = O.Range("C4:E" & DL) 'définit le tableau des valeurs TV
For i = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs
    If CStr(TV(i, 1)) <> CStr(TV(i, 3)) Then 'condition : si la donnée ligne colonne 1 de TV est différente de la donnée ligne I colonne 3 de TV (les deux converties en texte)
        O.Cells(i + 3, "C").Select 'sélectionne la cellule ligne I+3, colonne C de l'onglet O
        MsgBox "Ligne différente !" 'message
    End If 'fin de la condition
Next i 'prochaine ligne de la boucle
End Sub

ric

Rechercher des sujets similaires à "boucle verification comparaison"