pas de valeur erreur avec vlookup - VB/VBA/VBS - Programmation
Marsh Posté le 24-10-2007 à 09:08:02
Il s'agit peut-être d'un problème de structure de « zone ».
Il faudrait que tu fasses un test en insérant une fonction RECHERCHEV dans ta feuille pour tester manuellement tes paramètres.
Si par ce moyen tu ne retrouves pas les bonnes valeurs c'est que « zone » est mal construire, sinon cela pourrait vouloir dire qu'elle est mal référencée dans le code.
Marsh Posté le 24-10-2007 à 11:10:11
Bonjour,
J'ai testé avec rechercheV est cela fonctionne effectivement.
je pense que Vlookup ne fonctionne pas avec des "zones" de feuilles différentes.
Finalement j'ai appelé toutes mes informations dans la même feuille et je les teste dans des cellules.
Cela fonctionne mais ce n'est pas ce que je souhaitai au départ. Je souhaitai tester directement "esterror(Vlookup)".
Quand on est pas pro on bidouille !!! Dommage.
i = 3
Dim zone As Range
Worksheets("ancien" ).Activate
Set zone = Range("A3:C" & nbligneancien + 2)
zone.Name = "BaseRecherche" 'donner un nom à la sélection
While Worksheets("nouveau" ).Cells(i, 1) <> "" 'tant qu'on est pas à la fin de la liste nouveau
Worksheets("ancien" ).Range("C1" ) = Worksheets("nouveau" ).Cells(i, 1) 'je met la nouvelle valeur dans la feuille ancien
Worksheets("ancien" ).Range("D1" ) = "=vlookup(C1, BaseRecherche, 1, 0)" ' je fais ma recherche à l'intérieur feuille ancien
Worksheets("ancien" ).Activate
If IsError(Range("D1" ).Value) = True Then 'pas trouve la réference on l'ajoute
Worksheets("nouveau" ).Rows(i).Copy 'sélection ligne à copier
Rows(numligneajout).Select 'sélection endroit destination pour coller
ActiveSheet.Paste 'colle le presse papier
numligneajout = numligneajout + 1 ' une ligne de plus dans l'ancien classeur
End If
i = i + 1
Wend
Voila, voila ...
Si ça peut servir à quelqu'un.
Merci pour la réponse.
Doli
Marsh Posté le 23-10-2007 à 15:18:59
Bonjour à tous,
voici mon souci :
Je compare deux listes : une ancienne (feuille "ancien" ) et une nouvelle (feuille "nouveau" ).
je compare la nouvelleliste avec une boucle while <>"" et je recherche si chaque cellule existe dans l'ancienne liste. Ensuite si elle n'existe pas je devrais l'ajouter. Mais je n'en suis pas encore là!!
J'ai bidouillé la fonction lookup avec ce que j'ai lu sur le net et lorsqu'elle ne trouve pas la cellule dans la feuille ancienne elle ne me renvoie pas N/A (valeur que je souhaite tester par la suite), elle me renvoie la cellule en cours (cell(i,1))
voici un extrait !
i = 3
Dim zone As Range
Set zone = Worksheets("ancien" ).Range("A3:C" & nbligneancien + 2)
Worksheets("ancien" ).Select 'sinon vlookup marche pas
While Worksheets("nouveau" ).Cells(i, 1) <> ""
Worksheets("ancien" ).Range("C1" ) = Application.WorksheetFunction.VLookup(Cells(i, 1), zone, 1, False)
'If estna(Worksheets("ancien" ).Range("C1" )) Then 'pas trouve la réference
'faire la copie/collage
'End If
i = i + 1
Wend
Merci à tous ceux qui auront un peu de temps pour m'aider
Doli