Si valeur commence par une lettre en contient un tiret ( VBA )

bibbip35

XLDnaute Occasionnel
Bonjour à tous

Dans le cadre d'un projet vba pour mon travail

Je cherche a creer une macro qui me une alerte si une plage de cellule defini commence
par une lettre et contient un tiret

Exemple :
Plage de cellule A1 = C123-1
Msgbox : Attention valeur A1 KO

Plage de cellule A1 = C123
Msgbox : Valeur A1 OK

Pouvez-vous m'aider SVP?

Merci pour votre aide

Bibbip35
 

Victor21

XLDnaute Barbatruc
Re : Si valeur commence par une lettre en contient un tiret ( VBA )

Bonjour bibbip35.

Cette fonction est native dans Excel : Données, Validation, autoriser : Personnalisé formule :
=NBCAR(SUBSTITUE(A1;"-";""))=NBCAR(A1)
message d'alerte : "Attention, valeur A1 KO".
Par contre, pas de message s'il n'y a pas d'erreur, mais vous pouvez prévoir, toujours avec cette fonction, un message d'alerte lorsque A1 est sélectionné : "Pas de tiret chez moi !".
 
Dernière édition:

gilbert_RGI

XLDnaute Barbatruc
Re : Si valeur commence par une lettre en contient un tiret ( VBA )

Bonjour, bibbip35, Patrick

comme ceci peut-être

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub
 rep = IIf(Not IsNumeric(Target), "Attention valeur " & Target.Address & " KO", "Valeur " & Target.Address & " OK")
MsgBox rep
End Sub
 

CISCO

XLDnaute Barbatruc
Re : Si valeur commence par une lettre en contient un tiret ( VBA )

Bonjour à tous

@ Gilbert_RGI : Où tiens tu compte de cette partie "et contient un tiret" de la demande de bibbip35 dans ta macro ?

Merci.

@ plus
 

gilbert_RGI

XLDnaute Barbatruc
Re : Si valeur commence par une lettre en contient un tiret ( VBA )

Désolé mal lu merci CISCO

alors voilà qui devrait faire la demande :confused:
 

Pièces jointes

  • msg_valeur_cellule.xlsm
    18.7 KB · Affichages: 30
Dernière édition:

david84

XLDnaute Barbatruc
Re : Si valeur commence par une lettre en contient un tiret ( VBA )

Bonjour,
via une fonction personnalisée utilisant une expression rationnelle :
Code:
Function toto(c As String) As Boolean
Dim oRegExp As Object
Set oRegExp = CreateObject("vbscript.regexp")
oRegExp.ignorecase = True
oRegExp.Pattern = "^[a-z]{1}.*-.*"
If oRegExp.test(c) Then toto = True
End Function

On peut aussi procéder autrement via les fonctions LEFT et INSTR de VBA.
A+
 

bibbip35

XLDnaute Occasionnel
Re : Si valeur commence par une lettre en contient un tiret ( VBA )

Merci à tous pour vos reponses

Mais j'ai pas bien compris pour utiliser ces codes dans mon cas
je vous rassurre c'est moi... avec l'age :eek:

En faite pour être plus clair dans mon besoin final que je souhaitais adapté...

Si A1 = C100
Call C100 ==> C'est une macro de mise en forme

Si A1 = C100-1
Call C100-1

Si A1=1C100
Call 1C100

Si A1 <> C100 & C100-1 & 1C100
EXIT SUB


DESOLER DE NE PAS AVOIR ETE PLUS CLAIR DES LE DEBUT
mais je pensais y arriver sans vous en demander trop...:eek:

cdlt

Bibbip35
 

Discussions similaires

Statistiques des forums

Discussions
312 584
Messages
2 089 975
Membres
104 321
dernier inscrit
tesre