> 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
5,99 €Opération Le Printemps des comics 2021 : sélection de comics à 5,99 €
Valable jusqu'au 16 Mai

Amazon participe à l'opération Le Printemps des comics 2021 où une sélection de comics vous est proposée à 5,99 €. Vous trouverez Venom, Spiderman, Haweye, Thanos, Thor, Hulk, Daredevil, Wolverine, ...


> Voir l'offre
70,04 €Carte mémoire microSDXC UHS-I U3 SanDisk Extreme 400 Go (160 Mo/s) à 70,04 € livrée
Valable jusqu'au 16 Mai

Amazon Allemagne fait une belle promotion sur la carte mémoire microSDXC UHS-I U3 A2 SanDisk Extreme 400 Go qui passe à 65,54 € (avec la TVA ajustée). Comptez 4,50 € pour la livraison en France soit un total de 70,04 € livrée alors qu'on la trouve ailleurs autour de 90 €. Cette carte mémoire offre des vitesses jusqu'à 160 Mo/s et est idéale pour les téléphones, caméras et appareils photo HD/4K.

Vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et qu'il n'y a pas de douane. Si vous êtes perdu en allemand, vous pouvez traduire le site en anglais.


> Voir l'offre
18,77 €Kit Sgile de 9 outils de maintenance réseau à 18,77 €
Valable jusqu'au 14 Mai

Amazon fait une promotion sur le kit Sgile de 9 outils de maintenant réseau qui passe à 18,77 € au lieu de 34 €. Tout pour monter et tester votre réseau : pince de sertissage, testeur de réseau, connecteurs de cristal RJ45, couvertures de connecteurs, outils de perforation, coupleur RJ45, coupleur 3-voies, couteau de décapage de câble, câbles de serrage en nylon.


> 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