Formule et variables

  • Initiateur de la discussion Initiateur de la discussion PikPik
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

PikPik

Guest
Bonjour à tous,

Lorsque nous déclarons une variable par exemple dim TEffort() as int, est il possible de dire que i vaut une formule sans avoir à passer par une cellule, cf l'exemple suivant:

Code:
cellvar.Formula = '=VLOOKUP(' & T(k, j) + l & ',feuil1!Cel,' & i + 1 & ',FALSE)'
TEffort(k, j) = cellvar.Value

Et que nous remplacerions par:
Code:
TEffort(k, j)= '=VLOOKUP(' & T(k, j) + l & ',feuil1!Cel,' & i + 1 & ',FALSE)'

Tel quel cela ne marche pas mais existe t il une méthode?
 
Bonjour Pikpik, 2passage, le forum

BEEEEP, faute!!!

pas d'accord, 2passage, il y a moyen.
voici un exemple fonctionnel d'utilisation de la fonction RechercheV dans du code VBA.

Code:
    MsgBox WorksheetFunction.VLookup(Range('C17'), Range('A1:B15'), 2, False)

Cordialement, A+

Message édité par: yeahou, à: 28/06/2005 14:48
 
Ah ok merci Yeahou et 2passage.

Mais quand je compile ca me dit que impossible de lire la méthode vlookup de la classe worksheetfunction.

Pourtant vlookup se trouve bien dans l'explorateur d'objets!!!
 
D'ailleurs j'essai avec d'autres fonction et le message d'erreur est toujours le même:

TEffort(k, j, l, i) = Application.WorksheetFunction.Acosh(0.3) par exemple me redonne la même erreur. Mais pkoi snif snif?
 
D'ailleurs j'essai avec d'autres fonction et le message d'erreur est toujours le même:

TEffort(k, j, l, i) = Application.WorksheetFunction.Acosh(0.3) par exemple me redonne la même erreur. Mais pkoi snif snif?
 
re bonjour

voici un exemple fonctionnel, je crée un tableau VB avec en colonne 1 une valeur val&champ et en colonne 2 un message.
la dernière ligne de code recherche la valeur colonne 1 et renvoie en message la valeur colonne 2. J'utilise donc bien une fonction de recherche de feuille pour chercher une valeur dans un tableau VB.
si celà ne va pas, mets un fichier exemple.

Cordialement, A+

Code:
Dim Tab_Val(1 To 15, 1 To 2) As String, Val_Rech As String, Compteur As Integer
For Compteur = 1 To 15
Tab_Val(Compteur, 1) = 'val' & Compteur
Tab_Val(Compteur, 2) = 'la valeur est val' & Compteur
Next Compteur
Val_Rech = InputBox(prompt:='entrez la valeur cherchée', Default:='val4')
MsgBox WorksheetFunction.VLookup(Val_Rech, Tab_Val, 2, False)

Message édité par: yeahou, à: 28/06/2005 15:52
 
Oui Yeahou ton code fonctionne parfaitement et tu as raison sur le Acosh puisque le cosh est toujours supérieur à 1 looool

Cependant j'ai beau essayé je n'arrive vraiment pas à adapter le code pour mon appli.

Voici un fichier qui represente un peu la situation à laquelle je suis confronté et l'erreur sortie est la même que celle décrite plus haut.
 
Oui Yeahou ton code fonctionne parfaitement et tu as raison sur le Acosh puisque le cosh est toujours supérieur à 1 looool

Cependant j'ai beau essayé je n'arrive vraiment pas à adapter le code pour mon appli.

Voici un fichier qui represente un peu la situation à laquelle je suis confronté et l'erreur sortie est la même que celle décrite plus haut. [file name=test_20050629152827.zip size=9641]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/test_20050629152827.zip[/file]
 

Pièces jointes

Bonjour

tu as deux problèmes:

1-dans la ligne
teff(k, j) = Application.WorksheetFunction.VLookup(tab1(k, j) + 1, tableau, j + 1, False)
tableau ne correspond à rien, je pense que tu veux faire une recherche dans tab1 ce qui se traduit par
teff(k, j) = Application.WorksheetFunction.VLookup(tab1(k, j) + 1, tab1, j + 1, False)

2-dans la même ligne (modifiée)
teff(k, j) = Application.WorksheetFunction.VLookup(tab1(k, j) + 1, tab1, j + 1, False)
ta valeur cherchée tab1(k, j) + 1 n'existe pas puisqu'elle correspond à (100 + k * 100) + 1, comme tu as positionné le dernier paramètre à false, cela signifie que tu cherches la correspondance exacte. Comme elle n'existe pas, tu as une erreur. Pour éviter un plantage, trois solutions:
a-limiter la recherche à des valeurs existantes:
teff(k, j) = Application.WorksheetFunction.VLookup(tab1(k, j) , tab1, j + 1, False)
b-passer le dernier paramètre à true ce qui permettra de renvoyer la valeur la plus approchante.
teff(k, j) = Application.WorksheetFunction.VLookup(tab1(k, j) + 1, tab1, j + 1, True)
c-établir une gestion d'erreur pour gérer le cas ou la valeur cherchée n'existe pas
On error goto 'renvoie à une routine de gestion d'erreur perso
On error resume next 'en cas d'erreur passe l'exécution à la ligne suivante, à réactiver ensuite la gestion normale par On error goto 0

Ces trois solutions fonctionnent sur ton code, à toi de choisir la plus adaptée.

rappel de la syntaxe
Application.WorksheetFunction.VLookup(valeurcherchéeencolonne1detableaudedonnées,tableaudedonnées, collonedetableaudedonnéesàrenvoyer,valeurapprochante)


Cordialement, A+

Message édité par: yeahou, à: 29/06/2005 21:50
 
Je m'excuse d'abuser de ta gentillesse yehaou mais juste dans la syntaxe:

teff(k, j) = Application.WorksheetFunction.VLookup(tab1(k, j) + 1, tableau, j + 1, True)

tableau se réfère aux cellules A3 jusqu'à F5, et je comprends pas qu'il ne reconnaisse pas tableau comme un tableau.

Voila si tu peux m'expliquer vite fait ce dernier point je t'en serais sincérement reconnaissant.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
15
Affichages
771
Réponses
3
Affichages
919
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
902
Retour