> Tous les forums > Forum Autres langages
 Test condition par rapport à une variable array
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
lavoieb
  Posté le 27/11/2012 @ 16:02 
Aller en bas de la page 
Nouvel astucien

Bonjour à tous,

Je suis nouveau sur le forum et je débute en VBA.

Je voudrais valider l'intégrité d'une valeur à inscrire dans une cellule à partir d'une procédure évènementielle. La valeur qui doit être inscrite dans la cellule comporte 13 caractères numériques et certains d'entre eux ont une signification. Il s'agit d'un N° de prescription sylvicole. Voici un exemple d'un N° de prescription : 0112525120321.

Les deux premiers caractères doivent toujours être "01"

Les trois caractères suivants doivent être à l'intérieur d'une liste de valeurs en comportant 10.

Finalement, les caractères 6 et 7, doivent faire parti d'une liste de valeurs en comportant 26.

J'ai écris le code suivant, mais ça ne marche qu'en partie. Je comprend que la comparaison du target avec la variable array est la source du problème. De quelle façon dois je m'y prendre?

Private Sub Worksheet_Change(ByVal Target As Range)
'Procédure évènementielle permettant de valider l'intégrité du N° de prescription


Dim Ua As Variant
Dim Conseiller As Variant

Ua = Array("121", "122", "123", "124", "125", "126", "127", "128", "133", "142")


Conseiller = Array("20", "50", "21", "51", "22", "52", "23", "53", "24", "54", "25", "55", "26", "56", _
"27", "57", "28", "58", "33", "59", "03", "60", "62", "64", "67", "49")

If Not Intersect(Target, Range("NoPresc")) Is Nothing Then


If Left(Target, 2) <> "01" Then

MsgBox "Les deux premiers caractères du N° de prescription doivent être ""01"" !", vbOKOnly, "Avertissement"

ElseIf Mid(Target, 3, 3) <> Ua Then

MsgBox "Les troisième, quatrième et cinquième caractères du N° de prescription doivent être une Unité d'aménagement valide !", vbOKOnly, "Avertissement"

ElseIf Mid(Target, 6, 2) <> Conseiller Then

MsgBox "Les sixième et septième caractères du N° de prescription doivent être un N° de Conseiller valide !", vbOKOnly, "Avertissement"

End If

End If

End Sub


Merci à l'avance.

Publicité
fonio
 Posté le 03/12/2012 à 23:23 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

brut de pomme :

Rechercher une valeur dans un tableau (array)

Dim tbl(1 To 3)
tbl(1) = "aaa"
tbl(2) = "bbb"
tbl(3) = "ccc"
v = "ddd"
If IsError(Application.Match(v, tbl, 0)) Then
MsgBox "inconnu"
Else
MsgBox "existe"
End If

(source = http://www.excelabo.net/trucs/trouver_valeur_array , par l'excellent Jacques Boisgontier sur excelabo.net)



Modifié par fonio le 03/12/2012 23:26
lavoieb
 Posté le 05/12/2012 à 15:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Nouvel astucien

Merci pour la piste de solution.

J'ai essayé de l'adapter à mon cas précis et jusqu'à présent ça ne fonctionne pas mais je continu d'essayer. Je vais sûrement finir par y arriver.

fonio
 Posté le 06/12/2012 à 21:35 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

If Not Intersect(Target, Range("NoPresc")) Is Nothing Then

If Left(Target, 2) <> "01" Then
MsgBox "Les deux premiers caractères du N° de prescription doivent être ""01"" !", vbOKOnly, "Avertissement"
Exit Sub

ElseIf IsError(Application.Match(Mid(Target, 3, 3), Ua, 0)) Then
MsgBox "Les troisième, quatrième et cinquième caractères du N° de prescription doivent être une Unité d'aménagement valide !", vbOKOnly, "Avertissement"
Exit Sub
ElseIf IsError(Application.Match(Mid(Target, 6, 2), Conseiller, 0)) Then
MsgBox "Les sixième et septième caractères du N° de prescription doivent être un N° de Conseiller valide !", vbOKOnly, "Avertissement"
Exit Sub
End If


'zyva !

End Sub

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
44,99 €SSD Crucial P5 500 Go (3D NAND, NVMe, PCIe, M.2, 3400 Mo/s) à 44,99 €
Valable jusqu'au 14 Avril

Amazon fait une promotion sur le SSD Crucial P5 500 Go (3D NAND, NVMe, PCIe, M.2) qui passe à 44,99 € livré gratuitement. On le trouve ailleurs à partir de 90 €. Ce SSD offre des vitesses de lecture/écriture séquentielle allant jusqu’à 3 400/ 3 000 Mo/s. Il est garanti 5 ans.


> Voir l'offre
249,99 €Ecran PC LED 28 pouces Samsung U28E590 (4K UHD, 1 ms, Freesync) à 249,99 €
Valable jusqu'au 14 Avril

Boulanger fait une promotion sur l'écran PC LED 28 pouces Samsung U28E570DS qui passe à 249,99 € au lieu de 299 €. Cet écran au format 16/9 offre une dalle 4K (résolution 3840x2160) avec un temps de réponse de 1 ms. Il est compatible FreeSync. Une très bonne affaire ! La livraison est également offerte.


> Voir l'offre
1399 €Ecran PC incurvé 49 pouces Samsung Odyssey G9 C49G95TSSU (DWQHD, QLED 240 Hz, 1 ms) à 1399 €
Valable jusqu'au 15 Avril

Amazon fait une promotion sur l'écran PC incurvé 49 pouces Samsung Odyssey G9 C49G95TSSU qui passe 1399 € au lieu de 1599 €. Cet écran possède une dalle incurvée 1000R avec une fréquence de 240 Hz (FreeSync et Gsync compatible), offre une résolution DWQHD (5120x1440) et un temps de réponse de 1 ms.


> Voir l'offre

Sujets relatifs
condition de type de variable
variable contenant une commande vb.net
C mettre dans une variable resultat DOS
Commande ou variable sur Notepad ++
Précision de variable en Langage C
passage de tableaux en variable dans les fonctions
Variable batch
[java] tester existence variable/ objet
utiliser une variable pour creer un objet
Comment déclarer une variable date en V.B.E. ?
Plus de sujets relatifs à Test condition par rapport à une variable array
 > Tous les forums > Forum Autres langages