[vba] Remplacer un chiffre par une variable

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour, j'ai un problème pour remplacer une valeur par une variable dans ceci :

derniereLigne = Range("A65536").End(xlUp).Offset(1, 0).Row
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-5],movex!R2C2:R5000C5,4,FALSE)"


Je voudrais remplacer la valeur 5000 par la variable derniereLigne, mais je n'y parviens pas.

Pourriez vous me filer un coup de pouce car je suis bloqué ;)

Merci d'avance

12 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour
    Un p'tit coup de main?
    Ok :
    Dim derniereligne As Integer 
    derniereLigne = Range("A65536").End(xlUp).Offset(1, 0).Row 
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-5],movex!R2C2:R" + derniereligne + "C5,4,FALSE)"


    En cas d'erreur, merci de signaler exactement ce que vous dit excel et/ou VBA...
    Cordialement,
    -- Tout problème à sa solution. S'il n'y a pas de solution, ou est le problème? --
    0
  2. Utilisateur anonyme
     
    Donc, ca bloque toujours, et il dit

    Type incompatible

    en affichant

    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-5],movex!R2C2:R" + derniereligne + "C5,4,FALSE)"
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Es tu sur de l'emplacement de tes "[" et "]" dans la formule? J'ai l'impression qu'il en manque quelques uns... Je n'avais pas testé ton code, juste dit comment y insérer une variable...
      Donc en fait tu recherches la v aleur contenue même ligne mais 5 colonnes avant dans une matrice située feuille "movex" en 4ème colonne? C'est bien cela?
      ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-5],movex!R[2]C[2]:R[" + derniereligne + "]C[5],4,FALSE)"
      devrait fonctionner..... Sinon enregistre ta formule avec l'enregistreur de macros et remplace juste
       [5000] 
      par
      [" + derniereligne + "]
      0
  3. Utilisateur anonyme
     
    Justement ma formule a été faite par le moteur de macro, je cherche juste a remplacer ;)

    Toujours la même erreur, voici ce que je vois dans mes cellule mainetnant

    =RECHERCHEV(C2;movex!$B$2:RdernierLigneC5;4;FAUX)
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      vérifie la syntaxe de ton code :
      Dim derniereligne
      derniereLigne = ...
      "=VLOOKUP(RC[-5],movex!R[2]C[2]:R[" + dernierLigne 
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Utilisateur anonyme
     
    Oui, c'est un ancien affichage ca, j'ai vidé les cellule et relancé, en fait, rien ne se met dans les cellules, ca bloque avant avec toujours ce même message d'erreur et j'ai bien mis le code

    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-5],movex!R2C2:R[" + derniereligne + "]C[5],4,FALSE)"

    C'est désespérant :D
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      peut être tu pourrais placer ton fichier ici (avec cjoint ou cijoint services de dépose de fichiers) parce que là...
      0
  6. Utilisateur anonyme
     
    Je ne peux malheureusement pas, j'ai des accès très restreint au Web, par contre, si tu as un mail, c'est possible.
    0
  7. tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   460
     
    Salut piep14, pikaju,
    En utilisant la propriété Formula au lieu de FormulaR1C1 :
    ActiveCell.Formula = "=VLOOKUP(C2,movex!B2:R" & derniereligne & ",4,FALSE)"
    0
  8. Utilisateur anonyme
     
    Juste un dernier trucs, je voulais passer le tout en fonction car je l'utilise pas mal de fois

    Function derniereligne(colonne)
        Dim der As Integer
        der = Range(colonne & "65536").End(xlUp).Offset(1, 0).Row
    End Function


    Mais j'arrive pas a retourner la valeur :s
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Salut Tompols au passage,
      Function derniereligne(colonne) 
          derniereligne = Range(colonne & "65536").End(xlUp).Offset(1, 0).Row 
      End Function

      Pour l'utiliser : Insertion/Fonctions, choisir "personnalisées" et cliquer sur "derniereligne"...
      EDIT : J'oubliais... l'argument doit être saisit comme cela : "A" avec guillemets...
      0
  9. Utilisateur anonyme
     
    Je voulais l'appeler comme ca

    derligne = derniereligne("A")
    MsgBox derligne
    ActiveCell.Formula = "=VLOOKUP(C2,movex!B2:E" & derligne & ",4,FALSE)"

    C'est pas jouable ?

    Désolé, je suis plus spécialiste en développement WEB :D
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Pardon, je pensais que tu voulais appeler une fonction personnalisée depuis ta feuille...
      Ahhh un bon café et :
      Dim dern As Integer
      
      Function der(colonne)
          dern = Range(colonne & "65536").End(xlUp).Row
      End Function
      
      Sub recherch()
      Call der("A")
      MsgBox dern
      ActiveCell.Formula = "=VLOOKUP(C2,movex!B2:E" & dern & ",4,FALSE)"
      End Sub
      0
  10. Utilisateur anonyme
     
    Sub bttn5_Click()
        Range("H2").Select
        Call derniereligne("A")
        MsgBox der
        ActiveCell.Formula = "=VLOOKUP(C2,movex!B2:E" & der & ",4,FALSE)"
    End Sub
    
    Function derniereligne(colonne)
        Dim der As Integer
        der = Range(colonne & "65536").End(xlUp).Offset(1, 0).Row
    End Function


    Mon message d'alerte est vide :s
    0
  11. tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   460
     
    Re,
    Utiliser de variable pour stocker le resultat d'une fonction n'est pas recommandé (Cf déclaration et portée des variables)
    essaie plutot comme ceci :
    Sub bttn5_Click()
        Range("H2").Select
        MsgBox derniereligne("A")
        ActiveCell.Formula = "=VLOOKUP(C2,movex!B2:E" & der & ",4,FALSE)"
    End Sub
    
    Function derniereligne(colonne)
        Dim der As Integer
        derniereligne = Range(colonne & "65536").End(xlUp).Offset(1, 0).Row
    End Function
    0
  12. Utilisateur anonyme
     
    Génial, grand merci les gars ;)
    0