Tester la valeur d'une cellule

Bonjour,

je souhaiterais faire un check sur le contenu d'une cellule.

Je m'explique:

J'ai les cellule de D7 a D% ou je vais entrer une valeur commençant soit par B_% soit par NB_%

Je voudrais qu'il me jette si mes valeurs ne commence pas par une de ces 2 possibilités.

Voila le code que j'ai pour le moment, ou je voudrais ajouter cette fonctionnalité.

Option Explicit

'Fills the field of static with a formatted name

Sub createStaticName()

Dim brickName As String

Dim staticName As String

Dim reg As New VBScript_RegExp_55.RegExp

Dim rw As Integer

'old reg.Pattern = "(B_)((L)INE|(V)IA)([0-9]{0,2})(_[A-Z]*[0-9]*)_([TX-Z][1-9]+)(-[0-9]+)\n*"

reg.Pattern = "(\$[A-Z0-9_]*?)(_(?:USL|LSL|TGT))(N?B)([A-Z0-9_]*?)-[0-9]+\n*"

rw = 7

Application.ScreenUpdating = False

While Cells(rw, 1).Value <> "" And Cells(rw, 4).Value <> ""

Cells(rw, 1).Value = Replace(Cells(rw, 1).Value, "DENSITY", "DENS")

Cells(rw, 1).Value = Replace(Cells(rw, 1).Value, "RANDOM", "RAND")

If Cells(rw, 6) = "" Then

brickName = Cells(rw, 4).Value

brickName = Replace(brickName, "PATTERNING", "PAT")

brickName = Replace(brickName, "DEFINITION", "DEF")

brickName = Replace(brickName, "RANDOM", "RAND")

brickName = Replace(brickName, "PARAMETRIC", "PAR")

brickName = Replace(brickName, "COLOR", "COL")

brickName = Replace(brickName, "FORMATION", "FORM")

brickName = Replace(brickName, "CLASSIF", "CLAS")

brickName = Replace(brickName, "FILLING", "FILL")

brickName = Replace(brickName, "UCAVITY", "UCAV")

brickName = Replace(brickName, "DRAMBEOL", "DRAMB")

brickName = Replace(brickName, "LINE", "LIN")

brickName = Replace(brickName, "WAF", "WF")

brickName = Replace(brickName, "NAILPROCESSING", "NAILPROC")

brickName = Replace(brickName, "ANNEAL", "ANN")

brickName = Replace(brickName, "CUPILLAR", "CUPIL")

brickName = Replace(brickName, "SPACERZERO", "SPACERZ")

brickName = Replace(brickName, "DEFECT", "DEFT")

brickName = Replace(brickName, "HIK", "HK")

brickName = Replace(brickName, "FORMATION", "FORM")

brickName = Replace(brickName, "CTE2BEOL", "CTE2B")

brickName = Replace(brickName, "PASSIVATION", "PASSIV")

brickName = Replace(brickName, "FILTER", "FILT")

brickName = Replace(brickName, "REMOVAL", "REMOV")

brickName = Replace(brickName, "SPACERHVZERO", "SPACHVZ")

staticName = Cells(rw, 1).Value & brickName

staticName = reg.Replace(staticName, "$1$4$2")

If Right(staticName, 3) = "LSL" Then

Cells(rw, 2).Value = "Lower Spec Limit"

ElseIf Right(staticName, 3) = "USL" Then

Cells(rw, 2).Value = "Upper Spec Limit"

ElseIf Right(staticName, 3) = "TGT" Then

Cells(rw, 2).Value = "Target Limit"

Else

Cells(rw, 2).Value = "???"

End If

Cells(rw, 3).Value = "Plan"

Cells(rw, 5).Value = "String"

Cells(rw, 6).Value = staticName

Cells(rw, 7).Value = "Static"

Cells(rw, 8).Value = "T"

End If

rw = rw + 1

Wend

Application.ScreenUpdating = True

End Sub

Sub createParamName(ByRef Target As Range)

Dim paramName As String

Dim curCell As Range

Dim nblines As Integer

Dim i As Integer

Dim curRow As Integer

nblines = 0

For Each curCell In Selection

If curCell.Column = 1 And curCell.Row >= 7 Then

nblines = nblines + 1

End If

Next

curRow = Target.Row

For i = 1 To nblines

If Left(Cells(curRow, 1), 1) <> "$" Then

Rows(curRow).Select

Selection.Copy

Selection.Insert Shift:=xlDown

paramName = shortName(Cells(curRow, 1).Value, "-")

Cells(curRow, 1) = "$" & paramName & "_LSL"

Cells(curRow + 1, 1) = "$" & paramName & "_USL"

Cells(curRow, 1).Value = Replace(Cells(curRow, 1).Value, "$DF_", "$DE_")

Cells(curRow + 1, 1).Value = Replace(Cells(curRow + 1, 1).Value, "$DF_", "$DE_")

Cells(curRow, 1).Value = Replace(Cells(curRow, 1).Value, "RANDOM", "RAND")

Cells(curRow + 1, 1).Value = Replace(Cells(curRow + 1, 1).Value, "RANDOM", "RAND")

curRow = curRow + 2

Else

curRow = curRow + 1

End If

Next

End Sub

Function shortName(item As String, strTokenChar As String) As String

Dim pos As Integer

pos = InStr(1, item, strTokenChar)

If pos > 0 Then

shortName = Left(item, pos - 1)

Else

shortName = item

End If

End Function

Merci pour votre aide.

Cordialement

Bylbo.

Bonjour,

J'ai les cellule de D7 a D% ou je vais entrer une valeur commençant soit par B_% soit par NB_%

Je voudrais qu'il me jette si mes valeurs ne commence pas par une de ces 2 possibilités.

Pourquoi ne pas "simplement" utiliser une Validation de données avec une formule du style:
=(GAUCHE($D7)="B")+(GAUCHE($D7;2)="NB")

j'ai ce message d'erreur

capture

j'ai sélectionné ma colonne, je suis allé dans Data, data validation, j'ai choisi custom et mis la formule donnée.

Et la j'aile message d'erreur de dessus.

Re-bonjour,

Et tu as fait un copier-coller de la formule proposée ou tu l'as saisie (ou modifiée en fonction de tes besoins)? Parce que j'ai fait la même manip que celle que tu décris

Maintenant, si ton Excel est en version anglaise ... tu as pensé à traduire le nom de la fonction?

Bonjour,

Je n'avais pas pensé a traduire la fonction en anglais.

Mais le problème ne vient pas de la, j'ai toujours le même message d'erreur.

Mais régional setting sont anglais et ce que ça peut changer quelque chose ?

Re,

Voila ce que je peux mettre comme formule:

sans le =

(LEFT($D7)="B")+(LEFT($D7;2)="NB")

avec une '

'=(LEFT($D7)="B")+(LEFT($D7;2)="NB")

Sauf que dans ces 2 cas j'ai une erreur quand je saisie des valeurs commençant par B% ou NB% :

capture

Bonjour,

sur un forum excel on met des fichiers excel, pas des photos.

Là on ne sait pas ce que tu as saisi comme formule, ni le contenu exact de la cellule.

eric

Les formules qui sont testés sont celles noté au dessus.

J'essaie de saisir en D7 la valeur NB_PORUE ou B_PORUE

Fichier excel joint.

8test.zip (9.97 Ko)

U.Mulité a oublié un paramètre dans le 1er Gauche() :

=(GAUCHE($D7;1)="B")+(GAUCHE($D7;2)="NB")

eric

Super Merci beaucoup

merci

Bonsoir,

Désolé, mais je n'ai pas eu le temps de repasser plus tôt. Merci à eriiic d'avoir pris le relais.

=(GAUCHE($D7;1)="B")+(GAUCHE($D7;2)="NB")

À moins qu'il n'existe une subtilité qui m'échappe, la fonction GAUCHE retourne le premier caractère à gauche d'une chaîne, si on ne précise pas le nombre de caractères à extraire. Sur ma machine, la formule proposée avait été testée et donnait le résultat attendu (enfin, il me semble )

J'ai retesté dans le fichier transmis par bylbo7. Dans la validation, il y avait une apostrophe devant la formule. En l'ôtant et en remplaçant LEFT par GAUCHE, il me semble toujours que le résultat est celui demandé.

Je sais que j'arrive un peu tard, mais j'ai joint ce fichier test. Sur la version anglaise, la fonction devrait se traduire automatiquement ... Si quelqu'un pouvait tester et confirmer/infirmer, j'apprécierais

Ah oui, je confirme. Et l'aide aussi :

no_car Facultatif. Indique le nombre de caractères à extraire à l’aide de la fonction GAUCHE.

L’argument no_car doit être supérieur ou égal à zéro.

Si l’argument no_car est supérieur à la longueur du texte, la fonction GAUCHE renvoie l’intégralité du texte.

Si vous ne spécifiez pas l’argument no_car, sa valeur par défaut est 1.

Pourtant j'avais testé et obtenu "". Je devais être dans un état second...

@ bylbo7 : c'est sans doute parce que tu n'avais pas remplacé les ; par une ,

Les séparateurs de liste sont différents selon la langue

Merci pour le retour, eriiic

Pour ce qui est de

Je devais être dans un état second...

je ne veux même pas savoir ce que tu avais fait pour t'y trouver

Promis, pour 2018 je change de dealer. C'est trop de la m... ce que me refile l'actuel

Rechercher des sujets similaires à "tester valeur"