[vba] Remplacer un chiffre par une variable

Résolu/Fermé
Utilisateur anonyme - 8 avril 2010 à 08:54
 Utilisateur anonyme - 8 avril 2010 à 11:44
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
A voir également:

12 réponses

Utilisateur anonyme
8 avril 2010 à 10:29
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
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
8 avril 2010 à 10:54
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 8/04/2010 à 09:38
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
Utilisateur anonyme
8 avril 2010 à 09:42
Donc, ca bloque toujours, et il dit

Type incompatible

en affichant

ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-5],movex!R2C2:R" + derniereligne + "C5,4,FALSE)"
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
8 avril 2010 à 09:50
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
Utilisateur anonyme
8 avril 2010 à 09:55
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
8 avril 2010 à 10:05
vérifie la syntaxe de ton code :
Dim derniereligne
derniereLigne = ...
"=VLOOKUP(RC[-5],movex!R[2]C[2]:R[" + dernierLigne 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
8 avril 2010 à 10:13
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
8 avril 2010 à 10:15
peut être tu pourrais placer ton fichier ici (avec cjoint ou cijoint services de dépose de fichiers) parce que là...
0
Utilisateur anonyme
8 avril 2010 à 10:17
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
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
8 avril 2010 à 10:23
Salut piep14, pikaju,
En utilisant la propriété Formula au lieu de FormulaR1C1 :
ActiveCell.Formula = "=VLOOKUP(C2,movex!B2:R" & derniereligne & ",4,FALSE)"
0
Utilisateur anonyme
8 avril 2010 à 11:13
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 8/04/2010 à 11:25
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
Utilisateur anonyme
8 avril 2010 à 11:24
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
8 avril 2010 à 11:32
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
Utilisateur anonyme
8 avril 2010 à 11:37
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
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
8 avril 2010 à 11:40
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
Utilisateur anonyme
8 avril 2010 à 11:44
Génial, grand merci les gars ;)
0