Bonjour,
Je suis en train d'essayer de mettre au point une macro contenant une formule Vlookup sur des morceaux de tailles différentes au sein d'une cellule.
J'ai une feuille de donnée dans lequel l'utilisateur va entrer des ID de 6 ou 7 caractère (Ex: 9578/1, 2359/14, 5423/S,...) dans la colonne 10 (J). Ces entrées peuvent être multiples sur une seule cellule Ex (2489/2;2356/12;1108/S; ) ou pas. J'ai demandé à ces utilisateurs de toujours terminer un ID par un ";" même en cas d'entrée unique (il n'y aura que quelques utilisateurs qui seront entrainés au remplissage du formulaire).
Ces ID renvoient à une seconde feuille du classeur dans laquelle, associé à chaque ID, il y a des cellules de description.
Je voudrais renvoyer automatiquement ces 3 cellules de descriptions à coté de la cellule ou l'utilisateur écrit l'ID (chaque descriptif sera séparé d'un "; " dans la cellule).
Je n'arrive pas à réaliser une formule avec le problème du nombre de caractère aléatoire, donc j'ai tenté la macro... Mais ça ne marche pas non plus
Voici le code:
Actuellement, le programme bloque sur la ligne du premier Vlookup en me disant "Type Mismatch"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 Private Sub Worksheet_Change(ByVal Target As Range) Dim actuPosition As Integer Dim equipIdLen As Integer Dim valueLookup As String Dim equipType As String Dim equipDescr As String Dim equipModel As String If Target.Column = 10 And Target <> "" Then actuPosition = 1 equiptType = "" equipDescr = "" equipModel = "" Do Until actuPosition > Len(Target) - 5 ' will loop lookup as long as there is another equipment ID to look for equipIdLen = Application.Search(";", Target, actuPosition) - actuPosition - 1 'length of searched equipment ID without ; symbol valueLookup = Mid(Target, actuPosition, equipIdLen) 'Extract equipID value equipType = equipType & Application.VLookup(valueLookup, Sheets("Equipment").Range("A:U"), 5, 0) & "; " equipDescr = equipDescr & Application.VLookup(valueLookup, Sheets("Equipment").Range("A:U"), 6, 0) & "; " equipModel = equipModel & Application.VLookup(valueLookup, Sheets("Equipment").Range("A:U"), 7, 0) & "; " actuPosition = actuPosition + equipIdLen 'Move position in cell to the next equipID beginning Loop Target.Offset(0, 1) = equipType Target.Offset(0, 2) = equipDescr Target.Offset(0, 3) = equipModel End If End Sub
Est-ce que vous voyez un moyen de corriger/compléter ma macro?
Merci
Olivier
Partager