Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

  • Initiateur de la discussion Initiateur de la discussion Arpette
  • 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 !

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

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 🙄.
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
 
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.
@+
 
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
 
- 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
2
Affichages
117
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…