VBA après une boucle, vérifier les valeurs

Arpette

XLDnaute Impliqué
Bonsoir à toutes et tous,
Dans une procédure j'ai une boucle qui me renvoie les valeurs d'une feuille2 vers une feuille 1 en colonne B. Je souhaiterais à la fin de cette boucle, vérifié si la valeur " Ligne non trouvée" est trouvée une seule fois, avoir un message " Merci de renseigner les lignes" et sortir de la procédure. Si la valeur n'est pas trouvée, on poursuit.
Merci de votre aide.
@+
 

Pièces jointes

  • Arpette.xls
    28 KB · Affichages: 87
  • Arpette.xls
    28 KB · Affichages: 96
  • Arpette.xls
    28 KB · Affichages: 95

Efgé

XLDnaute Barbatruc
Re : VBA après une boucle, vérifier les valeurs

Re
Je suis bien d'accord, c'est parceque certain chiffre sont en teste et d'autre en nombre sur la feuille 1. La preuve, en changeant le format par le code c'est bon :rolleyes:.
Code:
Sub Test_2()
Dim Dico As Object, Dico2 As Object, i&, J&, Plg(), Plg2()
Set Dico = CreateObject("Scripting.Dictionary")
Set Dico2 = CreateObject("Scripting.Dictionary")
With Sheets("Feuil1")
    Plg = .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp).Offset(0, 1)).Value
End With
With Sheets("Feuil2")
    Plg2 = .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp).Offset(0, 1)).Value
    For i = LBound(Plg2, 1) To UBound(Plg2, 1)
        Dico(CLng(Plg2(i, 1))) = Plg2(i, 1)
    Next i
    For J = LBound(Plg, 1) To UBound(Plg, 1)
        If Not Dico.Exists(CLng(Plg(J, 1))) Then Dico2(Plg(J, 1)) = "Absent de la liste"
    Next J
    If Dico2.Count > 0 Then
        .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(Dico2.Count, 1) = Application.Transpose(Dico2.Keys)
        .Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Resize(Dico2.Count, 1) = Application.Transpose(Dico2.Items)
        MsgBox "Veuillez remplir ce champs avec l'information pertinente. Merci !"
    Else
        MsgBox "Pas de référence absente"
    End If
End With
End Sub
Cordialement
 

Arpette

XLDnaute Impliqué
Re : VBA après une boucle, vérifier les valeurs

Bonjour à toutes et à tous, j'ai placé le code d'Efgé en début de macro, j'ai bien le message d'alerte si il manque des références, le problème est que je peux pas les renseigner, le reste de la macro continue à se dérouler. Est-ce que je dois mettre ce code dans un autre module ?
Merci de votre aide.
@+
 

Efgé

XLDnaute Barbatruc
Re : VBA après une boucle, vérifier les valeurs

Bonjour Arpette, le fil, le forum
Peut être comme ça:
Code:
Sub Test_3()
Dim Dico As Object, Dico2 As Object, i&, J&, Plg(), Plg2()
Set Dico = CreateObject("Scripting.Dictionary")
Set Dico2 = CreateObject("Scripting.Dictionary")
With Sheets("Feuil1")
    Plg = .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp).Offset(0, 1)).Value
End With
With Sheets("Feuil2")
    Plg2 = .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp).Offset(0, 1)).Value
    For i = LBound(Plg2, 1) To UBound(Plg2, 1)
        Dico(CLng(Plg2(i, 1))) = Plg2(i, 1)
    Next i
    For J = LBound(Plg, 1) To UBound(Plg, 1)
        If Not Dico.Exists(CLng(Plg(J, 1))) Then Dico2(Plg(J, 1)) = "Absent de la liste"
    Next J
    If Dico2.Count > 0 Then
        .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(Dico2.Count, 1) = Application.Transpose(Dico2.Keys)
        .Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Resize(Dico2.Count, 1) = Application.Transpose(Dico2.Items)
        MsgBox "Veuillez remplir ce champs avec l'information pertinente. Merci !"
        Exit Sub
    Else
        'Ta macro
    End If
End With
End Sub
Cordialement
 

Discussions similaires

  • Question
Microsoft 365 TEXTBOX
Réponses
7
Affichages
378

Statistiques des forums

Discussions
312 493
Messages
2 088 950
Membres
103 989
dernier inscrit
jralonso