Fonction VLookup Vba +1

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 !

marcodebute350

XLDnaute Nouveau
Bonjour,

Après 2 jours de recherche sur internet, je ne trouve aucune solution à mon problème.

Voici une macro que je n'arrive pas à faire fonctionner:

Sub Augmente()
Dim myRange As Range
myRange = WorksheetFunction.VLookup(Range("R6").Value, Sheets("FORFAIT").Range("A2😛350"), 14, False)
myRange = myRange + 1
End Sub

Disons que sur une feuille nommée "2015" j'ai une case "R6" avec un nombre à l'intérieur (1120 pour l'exemple)
Sur une seconde feuille, nommée "FORFAIT", j'ai un tableau avec une base client (1120 étant la référence client).

Ce que je voudrais, c'est que la macro me prenne la valeur contenu dans R6 (soit 1120), me la cherche dans la feuille FORFAIT (disons qu'il la trouve en ligne 22), et m'augmente la case ligne 22 colonne 14 de 1.
Je pense que ce ne doit pas être très compliqué mais je suis débutant en macro et je n'ai vraiment rien trouvé sur internet...

Pouvez-vous m'aider s'il vous plait?

je vous remercie d'avance,

Cordialement,

marc
 
Re : Fonction VLookup Vba +1

Bonjour,

si tu type "myrange" comme étant un objet "range", quand tu veux l'initialiser il faut faire précéder d'un 'set'

Code:
Set MyRange =

mais en l'étt ta fonction renverrra une valeur et non l'objet "range"....

modifie le type de ta variable...

bon après midi
@+
 
Re : Fonction VLookup Vba +1

Bonjour,
pour faire genre
Code:
Sub test()
Dim r As Range, R1 ', R2, R3, R4, OPE
 Set r = Sheets("FORFAIT").Range("A2:P50"): r.Name = "BASE"
'Récupère la valeur
R1 = Application.VLookup([R6], [BASE], 16, False)
OPE = R1 + 1
MsgBox OPE

End Sub
 
Re : Fonction VLookup Vba +1

Bonjour,

Je vous remercie tous les deux pour vos réponses.

ST007: malheureusement, la macro bug à ce niveau là: OPE = R1 + 1.
Je pense qu'il n'a pas pris en compte la définition de OPE..

Également, pour la définition de R1, il n'est pas indiqué dans ta macro qu'il doive chercher R6 sur la feuille "2015", et non sur la feuille "FORFAIT", ce n'est pas gênant?

Pierrot: Je n'ai pas trop compris ce que tu m'as dit désolé. Je ne sais pas ce qu'est un type de variable, alors de là à le modifier pour trouver le bon, j'en suis loin..

Merci d'avance,

Marc
 
Re : Fonction VLookup Vba +1

Re,

Je n'ai pas trop compris ce que tu m'as dit désolé. Je ne sais pas ce qu'est un type de variable

c'est le type de donnée que peux recevoir une variable, quand tu mets "as range", c'est un objet soit une cellule en tant que telle... si tu mets "as string" ce sera du texte (une chaîne de caractère)... je t'invite à consulter l'aide vba pour plus d'infos...
 
Re : Fonction VLookup Vba +1

Malheureusement, je n'y arrive toujours pas..

St007: Ton tableau est exactement comme le mien, mais la macro ne marche pas. Je ne comprends pas car tu as remis la même macro que dans le post précédent, et tu as juste rajouté une macro qui appelle cette première macro.
Ça bug donc toujours au niveau de OPE = R1 + 1.
J'ai essayé de remplacer par R1 = R1 + 1, ou même R1.Value = R1 + 1 mais rien n'y fait.

Est-ce que quelqu'un aurait une solution svp?

Bonne journée,

Marc
 
Re : Fonction VLookup Vba +1

Bonjour à tous,

J'y arrive partiellement maintenant. Voici mon code:

Sub test()
Dim r As Range, R1, R2
Set r = Sheets("FORFAIT").Range("A2😛50")
'Récupère la valeur
R1 = WorksheetFunction.VLookup(Sheets("2015").Range("R6"), Sheets("FORFAIT").Range("A2😛50"), 16, False)
Sheets("FORFAIT").Select
R1 = R1 + 1
MsgBox R1
End Sub

Le problème étant maintenant qu'il ne m'augmente pas la valeur de la cellule R1 de 1, il me l'annonce juste. Admettons que la case L21 soit égale à 4, il va m'annoncer R1 = 5, mais la valeur de la case L21 ne changera pas, elle. Alors que c'était l'objectif initial..
De ce que je comprends, pour VBA, R1 est une valeur, et non la valeur d'une case en particulier, c'est pourquoi il n'augmente pas la valeur de L21.
Est-ce que c'est la fonction vlookup qui n'est pas adapté vous pensez?
Que me proposeriez-vous à la place?

Merci d'avance,

Marc
 
Re : Fonction VLookup Vba +1

Bonjour Pierrot,

C'est ce que j'avais cru comprendre en effet: "De ce que je comprends, pour VBA, R1 est une valeur, et non la valeur d'une case en particulier, c'est pourquoi il n'augmente pas la valeur de L21."

Mais comment résoudre mon problème alors? As-tu une solution?

Bon aprem
Marc
 
Re : Fonction VLookup Vba +1

Re,

essaye ceci, incrémentera la valeur de la colonne 16 de la feuille "forfait" si valeur trouvée en colonne A :
Code:
Sub test()
Dim x As Range
Set x = Sheets("FORFAIT").Range("A2:P50").Find(Range("R6"), , xlValues, xlWhole, , , False)
If Not x Is Nothing Then x.Offset(0, 16).Value = x.Offset(0, 16).Value + 1
End Sub
 
- 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

Discussions similaires

Réponses
4
Affichages
243
Réponses
15
Affichages
832
Réponses
1
Affichages
221
Réponses
6
Affichages
299
Réponses
24
Affichages
1 K
Réponses
12
Affichages
972
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
861
Réponses
1
Affichages
521
Réponses
5
Affichages
286
Retour