Fonction VLookup Vba +1

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:p350"), 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
 

Pierrot93

XLDnaute Barbatruc
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
@+
 

st007

XLDnaute Barbatruc
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
 

marcodebute350

XLDnaute Nouveau
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
 

Pierrot93

XLDnaute Barbatruc
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...
 

marcodebute350

XLDnaute Nouveau
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
 

marcodebute350

XLDnaute Nouveau
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:p50")
'Récupère la valeur
R1 = WorksheetFunction.VLookup(Sheets("2015").Range("R6"), Sheets("FORFAIT").Range("A2:p50"), 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
 

marcodebute350

XLDnaute Nouveau
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
 

Pierrot93

XLDnaute Barbatruc
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
 

Discussions similaires

Statistiques des forums

Discussions
311 711
Messages
2 081 782
Membres
101 817
dernier inscrit
carvajal