Grouper textes de plusieurs MsgBox

Bonjour,

J'ai réaliser un module qui me permet de localiser dans un tableau les cellules contenant un certain texte et de me renvoyer des informations concernant ces cellules dans des MsgBox. Le truc c'est que pour chaque cellule, il m'ouvre une MsgBox que je valide, puis une autre que je valide, puis une autre... Puis-je lui demander de stocker les informations pour qu'il ne me sorte qu'une MsgBox rassemblant toutes les cellules trouvées?

Voici mon code:
Sub a_commander() 
' 
' a_commander Macro 
' 
' Touche de raccourci du clavier: Ctrl+o 
' 

'définition des variables 
Dim texte As Variant 
Dim cas As String 
Dim ligne As Integer 
Dim col As Integer 
Dim chant As Long 

'le texte à chercher 
texte = "AC" 

'page et plage 
With Worksheets(1).Range("A1:BE10000") 

'fonction 
Set cas = .Find(texte, lookat:=xlPart, searchorder:=xlByColumns) 

If Not cas Is Nothing Then 
termine = cas.Address 

Do 
ligne = cas.Row 
col = cas.Column - 5 
nom = Range("D" & ligne).Formula 
chant = Range("B" & ligne).End(xlUp).Row 
chantier = Range("B" & chant).Formula 

'Message Box 
MsgBox "Chantier :" & chantier & vbCrLf & "Produit :" & nom & vbCrLf & "Semaine : " & col, vbExclamation, "A commander:" 

Set cas = .FindNext(cas) 

Loop While Not cas Is Nothing And cas.Address <> termine 

End If 
End With 

'Fin 
MsgBox "Il n'y a pas d'autres commandes à passer.", , "A commander" 

End Sub 


Merci d'avance.

4 réponses

  1. Contributeur
    Dim S As String
    [...]
    MsgBox zzz -> S = S & zzz & vbCrlf & vbCrlf
    [...]
    MsgBox "Pas d'autres commandes" -> MsgBox S
    1. Si j'inscris MsgBox dans mon code ("MsgBox zzz") avant le MsgBox final, il va me la faire apparaître non?

      Merci de ton aide ;D
      1. bonjour

        tu peux essayer en modifiant ton code:

        ... 
        Message=Message & vbCrLf & "Chantier :" & chantier & vbCrLf & "Produit :" & nom & vbCrLf & "Semaine : " & col, vbExclamation, "A commander:"  
        ' a chaque passage de boucle on rajoute dans la variable Message
        Set cas = .FindNext(cas)  
        
        Loop While Not cas Is Nothing And cas.Address <> termine  
        
        Msgbox Message 
        Exit Sub 
        End If  
        End With 
        ...
        bonne suite
        1. Modérateur
          Bonjour,
          Pour rebondir sur la bonne proposition de Paf, je passerais effectivement par une variable intermédiaire de type String :
          Dim Message As String
          'blabla
          Do 
          ligne = cas.Row 
          col = cas.Column - 5 
          nom = Range("D" & ligne).Formula 
          chant = Range("B" & ligne).End(xlUp).Row 
          chantier = Range("B" & chant).Formula 
          
          'Message Box 
          Message = Message & vbCrLf &  "Chantier : " & chantier & " Produit : " & nom & " Semaine : " & col
          Set cas = .FindNext(cas) 
          
          Loop While Not cas Is Nothing And cas.Address <> termine
          Msgbox Message
          Exit Sub

          La différence avec Paf tient dans les passages à la ligne qui vont rendre le résultat difficilement compréhensible.