[vba] Remplacer un chiffre par une variable

[Résolu/Fermé]
Signaler
Messages postés
229
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
19 décembre 2013
-
Messages postés
229
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
19 décembre 2013
-
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

Messages postés
229
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
19 décembre 2013
5
Bravo !!! Merci à tous les deux

PS : J'avais un autre problème dans le même genre :
https://forums.commentcamarche.net/forum/affich-17270146-remplacer-par-une-variable

Merci énormément.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
1219
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
451
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 629
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? --
Messages postés
229
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
19 décembre 2013
5
Donc, ca bloque toujours, et il dit

Type incompatible

en affichant

ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-5],movex!R2C2:R" + derniereligne + "C5,4,FALSE)"
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 629
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 + "]
Messages postés
229
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
19 décembre 2013
5
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)
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 629
vérifie la syntaxe de ton code :
Dim derniereligne
derniereLigne = ...
"=VLOOKUP(RC[-5],movex!R[2]C[2]:R[" + dernierLigne 
Messages postés
229
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
19 décembre 2013
5
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
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 629
peut être tu pourrais placer ton fichier ici (avec cjoint ou cijoint services de dépose de fichiers) parce que là...
Messages postés
229
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
19 décembre 2013
5
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.
Messages postés
1219
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
451
Salut piep14, pikaju,
En utilisant la propriété Formula au lieu de FormulaR1C1 :
ActiveCell.Formula = "=VLOOKUP(C2,movex!B2:R" & derniereligne & ",4,FALSE)"
Messages postés
229
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
19 décembre 2013
5
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
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 629
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...
Messages postés
229
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
19 décembre 2013
5
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
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 629
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
Messages postés
229
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
19 décembre 2013
5
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
Messages postés
1219
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
451
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
Messages postés
229
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
19 décembre 2013
5
Génial, grand merci les gars ;)