Condition si 8 ou 11 caracteres

Bonjour,

Je recherche un moyen de verifier dans une collonne si les cellules ont bien 8 ou caractères.

il faut obligatoirelment avoir 8 caractères ou 11 caractères.

je m'arrache un peu les cheveux !

Merci !

Bonjour,

Admettons que la donnée soit en colonne A

=OU(NBCAR(A1)=8;NBCAR(A1)=11)

te donnera vrai ou faux pour la première cellule de la colonne, à recopier ensuite.

Bonsoir le forum,

Soit une plage renseignée A1:A10

=SI(SOMMEPROD((NBCAR(A1:A10)<>8)*1)+SOMMEPROD((NBCAR(A1:A10)<>11)*1)=(MAX(EQUIV(9^9;A:A)));"Oui";"Non")

Remarque : seule la plage est à changer dans la formule.

mbbp

=SI(SOMMEPROD((NBCAR(A1:A10)<>8)*(NBCAR(A1:A10)<>11));"Pas OK";"OK")

Ou bien le rouleau compresseur

=SI(SOMMEPROD((NBCAR(A:A)<>8)*(NBCAR(A:A)<>11)*(NBCAR(A:A)<>0));"Pas OK";"OK")

Bonjour,

Merci toutes les solution sont biens !!

il me reste à trouvrer le moyen de faire une alerte en cas de FAUX ou PAS OK

Peut être avec la fonction si ESTERR....

Bon WE

Eric

Re,

=SIERREUR(SI(SOMMEPROD((NBCAR(A1:A10)<>8)*1)+SOMMEPROD((NBCAR(A1:A10)<>11)*1)=(MAX(EQUIV(9^9;A:A)));"Oui";"Non");"***")

mbbp

Merci je vais essayer egalement...

J'ai essaye le code ci dessous et cela fonctionne comme je veux, mais j'avous que l'on peut certaienment faire plus court et plus simple !! mais bon je suis debutant !!

'Contrôle de la longueur des BIC(s) sur 8 ou 11 positions

Range("H4").Select ' copie des valeurs a controler

ActiveSheet.Paste

Range("J4").Select ' dans cette colonne on controle avec la valeur VRAI OU FAUX

Application.CutCopyMode = False

ActiveCell.FormulaR1C1 = "=OR(LEN(RC[-2])=8,LEN(RC[-2])=11)"

Range("H4").Select

Range(Selection.Offset(0, 0), Selection.End(xlDown)).Offset(0, 2).Select

Selection.FormulaR1C1 = "=OR(LEN(RC[-2])=8,LEN(RC[-2])=11)"

Range("J4").Select

' Controle si présence de bic avec valeur FAUX

Dim fin0 As Variant ' Déclare fin comme valeur pour stoper

Dim continue0 As Variant ' Déclare continue comme valeur pour continuer

Range("J4").Select 'Controle si presence de FAUX

Do

If ActiveCell.Value = "FAUX" Then

fin0 = MsgBox("Présence de BIC qui ne sont pas sur 8 ou 11 positions", vbCritical)

Exit Sub ' Stop de la macro suite erreur

End If

ActiveCell.Offset(1, 0).Select

Loop Until ActiveCell.Value = ""

'Tous les BIC(s) sont sur 8 ou positions, la macro continue

Sheets("FichierE4SC").Select

continue0 = MsgBox("Le(s) BIC sont sur 8 ou 11 positions ", vbInformation)

Voila pas très jolie... mais cela fonctionne!

Merci

Bonjour,

S'il s'agit simplement de vérifier que les cellules de la colonne H ont bien 8 ou 11 caractères, il n'est pas utile de transiter par des formules dans ton code VBA.

Un exemple :

Sub Test()
Dim Cel As Range
    For Each Cel In Range(Range("H4"), Range("H4").End(xlDown))
        If Len(Cel) <> 8 And Len(Cel) <> 11 Then
            MsgBox "Le(s) BIC ne sont pas sur 8 ou 11 positions", vbInformation
            Exit Sub
        End If
    Next Cel
    MsgBox "Le(s) BIC sont sur 8 ou 11 positions", vbInformation
End Sub

A+

Merci

C'est plus simple !!

ericness a écrit :

il me reste à trouver le moyen de faire une alerte en cas de FAUX ou PAS OK

Peut être avec la fonction si ESTERR....

ericness a écrit :

Merci je vais essayer egalement...

J'ai essaye le code ci dessous et cela fonctionne comme je veux, mais j'avoue que l'on peut certainement faire plus court et plus simple !! mais bon je suis débutant !!

Voila pas très jolie... mais cela fonctionne!

Merci

Plus court, plus simple, plus joli ... question de goût j'aurais fait une MFC avec comme condition

=OU(NBCAR(A1)=8;NBCAR(A1)=11)
Rechercher des sujets similaires à "condition caracteres"