VBA dimension de la variable fonction Vlookup
Fermé
Sylvain
-
Modifié par Sylvain le 28/04/2011 à 14:32
Msylvain Messages postés 10 Date d'inscription jeudi 28 avril 2011 Statut Membre Dernière intervention 19 mai 2011 - 29 avril 2011 à 08:26
Msylvain Messages postés 10 Date d'inscription jeudi 28 avril 2011 Statut Membre Dernière intervention 19 mai 2011 - 29 avril 2011 à 08:26
A voir également:
- VBA dimension de la variable fonction Vlookup
- Fonction si et - Guide
- Dimension a5 - Guide
- Vba excel sélectionner une plage de cellules variable ✓ - Forum VB / VBA
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
6 réponses
Utilisateur anonyme
Modifié par Lupin.PC4 le 28/04/2011 à 14:55
Modifié par Lupin.PC4 le 28/04/2011 à 14:55
Bonjour,
Dans un premier temps, prend bien note que la syntaxe [ val ]
n'est pas permis sous VBA puisqu'il s'agit d'un mot réservé.
Val est une instruction du VBA :
L'aide de VBA nous indique que :
Val, fonction
Renvoie le nombre contenu dans une chaîne de caractère sous la forme d'une valeur numérique d'un type approprié.
De plus, le résultat de l'instruction VLookUp n'est pas forcément
valide, il te faudra tester le résultat et le convertir au besoin.
Les instructions comme [ CDbl, CSng ] te permetrons de convertir
le résultat trouvé en "Double" ou en "Single".
Ne jamais considéré un résultat de lecture comme étant un type
défini. Le contenu de [ ActiveCell.Value ] ne peut jamais être
deviné. Bien que Excel permette de formatter les cellules, leurs
contenus en est inconnu à la base.
Ne jamis oublier que le contenant et le contenu sont deux éléments
distinct de l'équation. En programmation, il est souhaitable de
considéré la lecture d'un contenant comme étant de Type Variant.
C'est au programmeur de valider les résultats obtenus.
Ex.:
Comme toujours, ce texte constitue mon opignon personnel.
Il existe plusieurs façon de penser, donc plusieurs façons
de programmer.
Cdt
Lupin
Dans un premier temps, prend bien note que la syntaxe [ val ]
n'est pas permis sous VBA puisqu'il s'agit d'un mot réservé.
Val est une instruction du VBA :
L'aide de VBA nous indique que :
Val, fonction
Renvoie le nombre contenu dans une chaîne de caractère sous la forme d'une valeur numérique d'un type approprié.
De plus, le résultat de l'instruction VLookUp n'est pas forcément
valide, il te faudra tester le résultat et le convertir au besoin.
Les instructions comme [ CDbl, CSng ] te permetrons de convertir
le résultat trouvé en "Double" ou en "Single".
Ne jamais considéré un résultat de lecture comme étant un type
défini. Le contenu de [ ActiveCell.Value ] ne peut jamais être
deviné. Bien que Excel permette de formatter les cellules, leurs
contenus en est inconnu à la base.
Ne jamis oublier que le contenant et le contenu sont deux éléments
distinct de l'équation. En programmation, il est souhaitable de
considéré la lecture d'un contenant comme étant de Type Variant.
C'est au programmeur de valider les résultats obtenus.
Ex.:
Option Explicit Sub Test() Dim Valeur As Variant Valeur = Val(ActiveCell.Value) Valeur = CDbl(ActiveCell.Value) Valeur = CSng(ActiveCell.Value) End Sub '
Comme toujours, ce texte constitue mon opignon personnel.
Il existe plusieurs façon de penser, donc plusieurs façons
de programmer.
Cdt
Lupin
Msylvain
Messages postés
10
Date d'inscription
jeudi 28 avril 2011
Statut
Membre
Dernière intervention
19 mai 2011
28 avril 2011 à 15:04
28 avril 2011 à 15:04
Tout d'abord merci de ton aide.
Je suis d'accord pour le val je l'ai nommé ainsi seulement pour m'exprimer clairement et effectivement il se peut que j'ai mal choisit =).
Pour ce qui est de sa dimension j'ai effectivement constaté que c'était un variant dans ce cas dois-je utiliser le bout de code que tu as écris tel quel pour transformer cette variable qui est pour le moment un variant en single, ou y a t'il autre chose à ajouter?
cdt
Sylvain
Je suis d'accord pour le val je l'ai nommé ainsi seulement pour m'exprimer clairement et effectivement il se peut que j'ai mal choisit =).
Pour ce qui est de sa dimension j'ai effectivement constaté que c'était un variant dans ce cas dois-je utiliser le bout de code que tu as écris tel quel pour transformer cette variable qui est pour le moment un variant en single, ou y a t'il autre chose à ajouter?
cdt
Sylvain
Utilisateur anonyme
Modifié par Lupin.PC4 le 28/04/2011 à 15:14
Modifié par Lupin.PC4 le 28/04/2011 à 15:14
re:
Dans un premier temps, il te faut valider si tu obtiens un résultat.
Le réultat de VLookUP est-il vide ?
Quelque chose du genre :
Cdt
Lupin
Dans un premier temps, il te faut valider si tu obtiens un résultat.
Le réultat de VLookUP est-il vide ?
Quelque chose du genre :
Option Explicit Sub Test() Dim Reponse As Variant Dim Resultat As Single Reponse = ActiveCell.Value ' VLookUp ... If (Reponse <> "") Then On Error Resume Next Resultat = CSng(ActiveCell.Value) If (Err) Then MsgBox "Valeur incorecte" Else MsgBox "Traitement désiré..." End If End If End Sub '
Cdt
Lupin
Msylvain
Messages postés
10
Date d'inscription
jeudi 28 avril 2011
Statut
Membre
Dernière intervention
19 mai 2011
28 avril 2011 à 15:27
28 avril 2011 à 15:27
Option Explicit Sub test() Dim nom As String Dim x As Single Dim test1 As Variant Dim test2 As Variant nom = InputBox("écrire le nom souhaité") Sheets("table").Select test1 = Application.VLookup(nom, Range("A2:E4"), 3, False) test2 = Application.VLookup(nom, Range("A2:E4"), 4, False) x = test1 * test2 End Sub
Voici le code que j'ai et ce que je veux exactement c'est transformé mes deux variable test1 et test2 en single pour pouvoir faire les calculs que je souhaite par la suite.
Je continue d'essayer avec ce que vous m'avez transmis précédement mais si avec ce bout de code vous réussissez à trouver une solution plus simple je suis prenneur =)
Merci,
Sylvain
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
28 avril 2011 à 16:12
28 avril 2011 à 16:12
re :
Voilà un exemple testé !
Cdt
Lupin
Voilà un exemple testé !
Sub Test() Dim Nom As String Dim x As Single Dim test1 As Variant Dim test2 As Variant Nom = InputBox("écrire le nom souhaité") Sheets("table").Select test1 = Application.VLookup(Nom, Range("A2:E4"), 3, False) test1 = CStr(test1) If Not (test1 = "Erreur 2042") Then test1 = CSng(test1) test2 = Application.VLookup(Nom, Range("A2:E4"), 4, False) test2 = CStr(test2) If Not (test2 = "Erreur 2042") Then test2 = CSng(test2) x = test1 * test2 Else MsgBox "Seconde recherche absente" End If Else MsgBox "Première recherche absente" End If End Sub '
Cdt
Lupin
Msylvain
Messages postés
10
Date d'inscription
jeudi 28 avril 2011
Statut
Membre
Dernière intervention
19 mai 2011
29 avril 2011 à 08:26
29 avril 2011 à 08:26
Re,
Tout d'abord merci beaucoup pour ton aide.
Le problème n'est plus le même à l'aide de cette macros mais il persiste toujours j'ai mon tableau avec des valeurs mais malgrès ça la macros me dit à chaque fois "Première recherche absente".
Pas grave j'ai obté pour l'alternative suivante :
J'effectue la recherche que je souhaitais faire avec la macros sur ma feuille excel j'en récupère le résultat puis je réalise ensuite les calculs souhaités grâce aux résultats obtenus. Cela convient pour le moment ça fonctionne.
Encore merci.
cdt,
Sylvain
Tout d'abord merci beaucoup pour ton aide.
Le problème n'est plus le même à l'aide de cette macros mais il persiste toujours j'ai mon tableau avec des valeurs mais malgrès ça la macros me dit à chaque fois "Première recherche absente".
Pas grave j'ai obté pour l'alternative suivante :
J'effectue la recherche que je souhaitais faire avec la macros sur ma feuille excel j'en récupère le résultat puis je réalise ensuite les calculs souhaités grâce aux résultats obtenus. Cela convient pour le moment ça fonctionne.
Encore merci.
cdt,
Sylvain