> 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
49,99 €SSD Crucial P5 500 Go (3D NAND, NVMe, PCIe, M.2, 3400 Mo/s) à 49,99 €
Valable jusqu'au 16 Mai

Amazon fait une promotion sur le SSD Crucial P5 500 Go (3D NAND, NVMe, PCIe, M.2) qui passe à 49,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
164,99 €SSD SanDisk Plus 2 To à 164,99 €
Valable jusqu'au 15 Mai

Amazon propose actuellement le SSD SanDisk Plus 2 To à 164,99 € livré gratuitement. Une très bonne affaire pour ce SSD très fiable et performant qui offre des débits de 530 Mo/s en lecture et 445 Mo/s en écriture. Il est garanti 3 ans. On le trouve ailleurs à partir de 200 €. 


> Voir l'offre
99,99 €NAS Synology DS120J à 99,99 €
Valable jusqu'au 16 Mai

Amazon propose actuellement le NAS Synology DS120J à 99,99 €. Ce NAS à 1 baie va vous permettre de mettre en place un espace de stockage sécurisé sur votre réseau local et peut aussi faire office de serveur multimédia, DLNA, serveur web, client ftp, bittorent, ... On le trouve ailleurs à partir de 115 € . A l'intérieur, vous devrez glisser un disque dur au format 3.5 pouces, comme ce disque dur Seagate Iron Wolf 8 To dédié aux NAS à 180,79 €.


> 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