[VBA] Besoin d'un coup de main svp ^^

Résolu
Alanderson69 Messages postés 36 Statut Membre -  
Bidouilleu_R Messages postés 1209 Statut Membre -
Bonjour,

j'ai besoin d'un coup de main pour une ligne de code VBA.

var_designation et var_ref sont mes variables. J'aimerais utiliser ces variables dans une formule recherchev dans VBA.

mon prog est :

var_designation = VLookup(var_ref, "references!A2:B200", "2", "FALSE")

le programme de reconnait pas "var-ref" comme une variable mais comme un texte.
La valeur affectée a "var_designation" est donc "FALSE".

Merci à ceux qui prendront la peine de m'épauler sur ce coup-là ^^.
Configuration: Windows 2003
Firefox 3.0.11

13 réponses

  1. giheller Messages postés 1960 Date d'inscription   Statut Membre Dernière intervention   146
     
    bonjour

    il faut peut être déclarer explicitement la variable afin qu'elle soit considérée comme tel.
    et l'initialiser sinon elle prned pour contenu son nom.
    0
  2. Alanderson69 Messages postés 36 Statut Membre
     
    ma variable semble être déclarée dans les normes :

    Public var_designation
    Public var_ref

    Je ne comprend pas le probleme
    0
  3. giheller Messages postés 1960 Date d'inscription   Statut Membre Dernière intervention   146
     
    est-elle initialisée ?
    avant de l'utiliser essyez d'afficher son contenu pour voir ce qu'elle contient.
    0
  4. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    Bonjour
    l'initialiser c'est écrire ...

    set var_ref = range("C3") par exemple.
    A+
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Alanderson69 Messages postés 36 Statut Membre
     
    le problème est que je ne veux pas afficher le résultat de ma formule dans une cellule mais directement dans une zone de texte sur mon Userform.
    j'ai essayé de créer une macro pour afficher le résultat dans une cellule pour connaitre la synthaxe pour la formule en VBA. Malheureusement je ne trouve pas comment l'adapter à ma situation.
    Merci à ceux qui se donnent la peine de m'aider.
    0
  7. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    Bonjour,
    Amon avis, il faut que tu déclare une variable globale.

    Avant le module, comme ça.

    Public maVariable as string ' string ou integer ou variant

    sub monmodule()
    'ici les calculs

    maVariable =sheets("feuil1").range("C3").value ' ou autre chose
    userform1.show

    end sub

    et dans l'initialisation du userform tu met

    userform1.textbox1.value=mavarible

    Explique clairement ce que tu veux car on ne connaît ni ton code ni ton besoin.
    A+
    0
  8. Alanderson69 Messages postés 36 Statut Membre
     
    merci pour ton aide.
    Je te donne ma ligne de code qui pose probleme:

    var_designation = VLOOKUP(var_ref,'references'!R[2]C[2]:R[200]C[2],2,FALSE)

    Je vais essayer ton alternative, mais ca ne m'arrange pas de passer par une cellule.
    Je pense qu'il s'agit uniquement d'un problème de synthaxe.
    Merci de m'aiguiller a nouveau.
    Est-ce possible de récupérer une adresse MSN ? ca sera plus facile. Merci beaucoup
    0
  9. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    C'est bon j'ai compris ton erreur!!!

    var_designation = VLOOKUP(var_ref,'references'!R[2]C[2]:R[200]C[2],2,FALSE)
    cette fonction "vlookup" n'existe pas en visual basic du moins pas sous ce nom.
    Quand tu recopies une fonction ici recherchev avec l'enregistreur VBA traduit la fonction en anglais ici vlookup mais il faut utiliser en VBA range.find

    je regarde et je complète sauf si tu as trouvé.

    A+
    0
  10. Alanderson69 Messages postés 36 Statut Membre
     
    var_designation = range.find(var_ref,'references'!R[2]C[2]:R[200]C[2],2,FALSE)

    ne marche pas non plus : sur l'apastrophe de " 'references' " il me dit :
    Erreur de compilation
    Attendu : Expression
    0
  11. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    Essaye en procédant comme ça!

    j'ai adapté d'après l'aide de VBA ta recherche...

    Sub test()

    Dim C as variant
    var_designation as variant
    Dim VarRéf As Variant

    'Je procéderai comme ça
    ' 1 ) je nomme la base1 en tant qu'objet

    Set base1 = Sheets("feuil1").Range("E5:G8") ' la tu mets ta base

    ' 2) je crée une variable VarRéf : ce que tu cherches
    VarRéf = Sheets("feuil1").Range("F2").Value
    ' tu peux utiliser une saisie différente

    With Worksheets("feuil1").Range(base1.Address) ' il faut adapter ici ta base
    Set c = .Find(VarRéf, LookIn:=xlValues)
    If Not c Is Nothing Then
    firstAddress = c.Address
    Do

    var_designation = c.Offset(0, 1) ' je prend la valeur de la colonne à droite
    Set c = .FindNext(c) ' ici on cherche le suivant
    Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
    End With

    MsgBox ("résultat pour " & VarRéf & " : ..." & var_designation)
    End Sub
    0
  12. Alanderson69 Messages postés 36 Statut Membre
     
    j'essaie ta solution. Merci pour toute ton aide, je te tiens au courant pour la suite ^^
    0
  13. Alanderson69 Messages postés 36 Statut Membre
     
    ca marche ! merci pour ton aide ! Petite question subsidiaire : comment fais ton pour rechercher dans une colonne qui se trouve avant la colonne contenant la valeur ?
    0
  14. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    Cela se passe là
    var_designation = c.Offset(0, 1) ' je prend la valeur de la colonne à droite
    var_designation = c.Offset(0, -1) ' je prend la valeur de la colonne à gauche

    quand tout sera ok met en résolu
    et n'hésite pas à revenir.
    A+
    0