Microsoft 365 boucle en VBA

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 !

lesoldat9

XLDnaute Occasionnel
Bonjour à tous,

Alors je cherche à compléter ma formule en gros je souhaite que

tant que la colonne B est égal à X alors qu'il vérifie que D + E est égal à 0

Si nous dépassons -10 alerte via msg box

For b = 3 To a - 1

'Formule si la valeur de la cellule b est égal à la valeur de la textbox2 alors

If Sheets("...").Range("b" & b).Value = TextBox2.Value Then
....
....
....
...
..


End If



Next

Si je dois m'expliquer en version non excel je souhaite que ma formule vérifie que le N° conducteur est bien un delta inférieur à -10 sinon alerte msg.


En espérant avoir était clair.

Merci d'avance

Cordialement.
 

Pièces jointes

Solution
Bon en creusant un peu plus j'ai réussi pour ceux à qui ca intéresse voici la formule

a = Cells(Rows.Count, 1).End(xlUp).Row + 1 'trouver dernière ligne vide

For b = 3 To a

'Formule si la valeur de la cellule b est égal à la valeur de la textbox2 alors

If Sheets(".....").Range("b" & b).Value = "c201" Then

c = c + Sheets("....").Range("d" & b).Value


End If


If Sheets("....").Range("b" & b).Value = "c201" Then

d = d + Sheets("....").Range("e" & b).Value


End If


Next


Delta = c + d

If Delta > "-10" Then MsgBox (Alerte)


End Sub
Bonjour Lesoldat,
Une solution sans VBA en PJ en rajoutant une colonne dans le tableau.
A noter
ma formule vérifie que le N° conducteur est bien un delta inférieur à -10 sinon alerte msg.
C'est plutôt :
"ma formule vérifie que le N° conducteur est bien un delta supérieur à -10 sinon alerte msg."

Si vous tenez au VBA, faites signe. Ce n'est guère plus difficile.
 

Pièces jointes

Bon en creusant un peu plus j'ai réussi pour ceux à qui ca intéresse voici la formule

a = Cells(Rows.Count, 1).End(xlUp).Row + 1 'trouver dernière ligne vide

For b = 3 To a

'Formule si la valeur de la cellule b est égal à la valeur de la textbox2 alors

If Sheets(".....").Range("b" & b).Value = "c201" Then

c = c + Sheets("....").Range("d" & b).Value


End If


If Sheets("....").Range("b" & b).Value = "c201" Then

d = d + Sheets("....").Range("e" & b).Value


End If


Next


Delta = c + d

If Delta > "-10" Then MsgBox (Alerte)


End Sub
 
Re,
Travaillant en tableau structuré, autant profiter de leur souplesse en interrogeant directement le tableau.
Une autre approche en PJ avec :
VB:
Sub Alerte()
    Dim Chaine$, L%
    Chaine = ""
    For L = 1 To [Tab_GestionStock].Rows.Count
        Ecart = [Tab_GestionStock[Sortie]].Item(L) + [Tab_GestionStock[Retour]].Item(L)
        If Ecart < -10 Then
            Chaine = Chaine & "N° conducteur : " & [Tab_GestionStock[N°Conducteur]].Item(L) & " - Ecart : " & Ecart & Chr(10)
        End If
    Next L
    If Chaine <> "" Then MsgBox Chaine Else MsgBox "Pas d'alerte détectée."
End Sub
 

Pièces jointes

Si votre pb se situe au niveau du msgbox, regardez ceci : LIEN
et testez cela si avec le 4 vous vouliez changer l'icone :
VB:
Sub Essai()
    Message = MsgBox("vbCritical", vbCritical, "Alerte")
    Message = MsgBox("vbExclamation", vbExclamation, "Alerte")
    Message = MsgBox("vbInformation", vbInformation, "Alerte")
    Message = MsgBox("vbQuestion", vbQuestion, "Alerte")
End Sub
 
Re,
Il suffisait la prose du lien que je vous ai envoyé, la syntaxe est :
Message = MsgBox("Texte d'alerte", vbCritical, "Alerte")
Pourquoi donc mettre du code dans Thisworkbook ?
Il vaut mieux le mettre dans un module. Sauf si vous vouliez un déclenchement spécifique de la macro.
Un essai en PJ avec déclenchement manuel avec :
VB:
Sub Alerte()
    Dim Chaine$, L%
    Chaine = ""
    For L = 1 To [Tab_GestionStock].Rows.Count
        Ecart = [Tab_GestionStock[Sortie]].Item(L) + [Tab_GestionStock[Retour]].Item(L)
        If Ecart < -10 Then
            Chaine = Chaine & "N° conducteur : " & [Tab_GestionStock[N°Conducteur]].Item(L) & " - Ecart : " & Ecart & Chr(10)
        End If
    Next L
    If Chaine <> "" Then
        Message = MsgBox(Chaine, vbCritical, "Alerte")
    Else
        MsgBox "Pas d'alerte détectée."
    End If
End Sub
 

Pièces jointes

Si votre pb se situe au niveau du msgbox, regardez ceci : LIEN
et testez cela si avec le 4 vous vouliez changer l'icone :
VB:
Sub Essai()
    Message = MsgBox("vbCritical", vbCritical, "Alerte")
    Message = MsgBox("vbExclamation", vbExclamation, "Alerte")
    Message = MsgBox("vbInformation", vbInformation, "Alerte")
    Message = MsgBox("vbQuestion", vbQuestion, "Alerte")
End Sub
Super ca fonctionne.
 
Re,
Il suffisait la prose du lien que je vous ai envoyé, la syntaxe est :
Message = MsgBox("Texte d'alerte", vbCritical, "Alerte")
Pourquoi donc mettre du code dans Thisworkbook ?
Il vaut mieux le mettre dans un module. Sauf si vous vouliez un déclenchement spécifique de la macro.
Un essai en PJ avec déclenchement manuel avec :
VB:
Sub Alerte()
    Dim Chaine$, L%
    Chaine = ""
    For L = 1 To [Tab_GestionStock].Rows.Count
        Ecart = [Tab_GestionStock[Sortie]].Item(L) + [Tab_GestionStock[Retour]].Item(L)
        If Ecart < -10 Then
            Chaine = Chaine & "N° conducteur : " & [Tab_GestionStock[N°Conducteur]].Item(L) & " - Ecart : " & Ecart & Chr(10)
        End If
    Next L
    If Chaine <> "" Then
        Message = MsgBox(Chaine, vbCritical, "Alerte")
    Else
        MsgBox "Pas d'alerte détectée."
    End If
End Sub
Merci c'était juste pour le test 😉
 
- 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
7
Affichages
330
Réponses
5
Affichages
473
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
79
Retour