Console d'erreurs

Bonjour,

Mon classeur todolist contient un certain nombre de boucles, de conditions et je me suis mit dans un nouveau classeur

pour écrire un petit code dans le but de m'afficher la cellule qui ne rempli pas une condition.

Je joins ce petit fichier en bas.

Quand on écrit en A2:A5, les cellules en B via formule affichent clôturé,

si une case reste vide en A then B reste vide également

Mon script vérifie uniquement si B contient le mot "clôturé" et affiche Ok en C,

si ce n'est pas le cas C reste vide ce qui me montre d'office ou la condition ne sera pas remplie

else affiche dans la petite console en D4: condition non remplie"

Je sais quand je vois qu'll manque un ou des "ok" en C quelle est la cellule incriminé mais

serait-il possible d'afficher le numéro d'une cellule ne remplissant pas une condition dans ma console

par exemple en dessous de D3, donc D4 : afficher le Numéro de(s) cellule(s) ne rempli pas la condition.

Je me dis que je doit compter les cellules en vba a partir d'une constatation par exemple If range("C" & scan) = "" then

compter les cellules pour savoir la position et lui attribuer un numéro de ligne pour la console.

Bonjour,

A tester

A+

Bonjour frangy,

Ca marche super bien :

Je vais analyser ton code car des ??? s'imposent à moi :

Dans else

Nok = true // variable est vrai

alors variable Texte = Texte & ", " & Range("C" & scan).Address(0, 0) // enregistrer le numéro de la cellule dans variable texte

as string

mais par contre la condition

If NOK Then Range("D3") = "error : condition Clôturé non remplie"

Range("D4") = "Concerne les cellules " & Right(Texte, Len(Texte) - 2)

Se trouve en dehors de la boucle et d'Else

et ne se termine pas par end if

Je bug un peu mais ca marche super bien ^^.

Dim scan As Integer
Dim NOK As Boolean
Dim Texte As String
    Range("C2:C5").ClearContents
    For scan = 2 To 5
        If Range("B" & scan) = "Clôturé" Then
            Range("C" & scan) = "OK"
        Else
            NOK = True
            Texte = Texte & ", " & Range("C" & scan).Address(0, 0)
        End If
    Next scan
    If NOK Then Range("D3") = "error : condition Clôturé non remplie"
    Range("D4") = "Concerne les cellules " & Right(Texte, Len(Texte) - 2)

En faite le code marche super bien sauf quand la boucle ne passe pas par else et ne rempli pas la variable texte

alors if nok hors boucle plante quand il cherche alors a écrire la position de la cellule qui n'existe pas dans variable texte

Je ne sais pas si je raisonne correctement mais en remettant ;

if nok then...... dans else

ca ne pose plus problème quand toutes les conditions sont OK

Sub lancerscript()
Dim scan As Integer
Dim NOK As Boolean
Dim Texte As String

Range("C2:C5").ClearContents

For scan = 2 To 5
    If Range("B" & scan) = "Clôturé" Then
        Range("C" & scan) = "OK"
    Else
        NOK = True
        Texte = Texte & ", " & Range("C" & scan).Address(0, 0)

        If NOK Then Range("D3") = "error : condition Clôturé non remplie"
        Range("D4") = "Concerne les cellules " & Right(Texte, Len(Texte) - 2)
    End If
Next scan

End Sub

Effectivement, je n'ai pas pris en compte le cas où tous les états sont clôturés

Essaie comme cela

Sub lancerscript()
Dim scan As Integer
Dim NOK As Boolean
Dim Texte As String
    Range("C2:C5,D3:D5").ClearContents
    For scan = 2 To 5
        If Range("B" & scan) = "Clôturé" Then
            Range("C" & scan) = "OK"
        Else
            NOK = True
            Texte = Texte & ", " & Range("C" & scan).Address(0, 0)
        End If
    Next scan
    If NOK Then Range("D3") = "error : condition Clôturé non remplie"
    If Texte <> "" Then Range("D4") = "Concerne les cellules " & Right(Texte, Len(Texte) - 2)
End Sub

A+

Ca marche !

If Texte <> "" Then...

J'ai juste deux questions :

.Pourquoi as-tu tenu à sortir if nok hors de la boucle ? et dans le cas de if nok et if texte, end if n'existe pas ?

Je te salue pour toute l'aide que tu m'as apporté un grand merci

Pourquoi as-tu tenu à sortir if nok hors de la boucle ?

De cette manière, l'affectation du message dans D3 s'effectue une seule fois en sortie de boucle.

dans le cas de if nok et if texte, end if n'existe pas ?

Si tu l'écris sur une seule ligne, le end if n'est pas nécessaire. Cela dit, ce n'est pas une pratique à conseiller car la structure conditionnelle est masquée.

A+

Super j'ai compris, encore merci pour ton aide

Rechercher des sujets similaires à "console erreurs"