VBA si #NA alors valeur precedente.

calomonos

XLDnaute Nouveau
Bonjour,

Pouvez vous m'aider a résoudre mon problème?
J'ai deux feuilles. Une reçoit certaine valeurs de l'autre en cliquant sur un bouton.
Je voudrais avoir la valeur que j'avais avant de cliquer si seulement j'ai #NA.

Par exemple dans ma feuille 2 j'ai une colonne avec le nom des monnaies et sa cote sur la même ligne dans une autre colonne. Après click sur le bouton les cotes sont mise a jour dans le tableau 1 si j'ai le même nom de monnaie que dans le tableau 2 (avec application.vlookup)
Jusque là tous fonctionne sauf que si le nom de la monnaie n'est pas dans la feuille 2 j'ai #NA alors que je voudrais garder la cote qui était présente avant.

Voici mon programme:

Sub bouton1_clic()
Dim nbligne
Sheets ("tableau") . Select
Nblig=cells.specialcells(xlcelltypelastcell).row
For i =6 to nblig
Cells(i,17).formula=application.vlookup(sheets("tableau").range("A" & i),sheets ("extraction").range("A1:J" & nblig),10,false)
Next i
Msgbox "données initialisées"
End sub

Merci par avance.
Cdt
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Calomonis, bonjour le forum,

Deux petites remarques sur ton code :
- Une variable non typée prendra le type Variant par défaut (le plus gourmand en mémoire)
- Évite les Select autant que tu le peux. Il ne font que ralentir l'exécution du code...

Ton code modifié :

VB:
Sub bouton1_clic()
Dim nbligne As Integer 'Long si plus de 32 767 lignes

With Sheets("tableau")
    nblig = .Cells.SpecialCells(xlCellTypeLastCell).Row
    For i = 6 To nblig
        .Cells(i, 17).Formula = IIf(IsError(Application.VLookup(Sheets("tableau").Range("A" & i), Sheets("extraction").Range("A1:J" & nblig), 10, False)), .Cells(i, 17), Application.VLookup(Sheets("tableau").Range("A" & i), Sheets("extraction").Range("A1:J" & nblig), 10, False))
    Next i
End With
MsgBox "données initialisées"
End Sub
 

calomonos

XLDnaute Nouveau
Voila un fichier de même type avec en feuille 4 le bouton avec l'ancien code.
En feuille 3 votre code.

Les cotes sont bien mise a jour avec le bouton feuille 4 mais toujours l'erreur #NA pour les "monnaies " n'apparaissant pas dans "extraction".
Cdt.
 

Pièces jointes

  • Classeur1.xlsm
    22 KB · Affichages: 31

Robert

XLDnaute Barbatruc
Repose en paix
Re,

Les codes ont changé par rapport au post #1 !... Tu aimes compliquer les choses.
Essaie comme ça :

VB:
Sub Bouton1_Clic()
Dim T As Worksheet
Dim E As Worksheet
Dim DL As Integer
Dim nbligne As Integer

Set T = Worksheets("Tableau")
Set E = Worksheets("extraction")
DL = E.Range("B" & Application.Rows.Count).End(xlUp).Row
Nblig = T.Cells.SpecialCells(xlCellTypeLastCell).Row
For i = 2 To Nblig
   T.Cells(i, 3).Value = IIf(IsError(Application.VLookup(T.Range("B" & i), E.Range("B1:C" & DL), 2, False)), T.Cells(i, 3), Application.VLookup(T.Range("B" & i), E.Range("B1:C" & DL), 2, False))
Next i
MsgBox "Données initialisées"
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali