Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA si #NA alors valeur precedente.

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 !

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
 
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
 
Re,

As-tu fait tourner la macro pas à pas [F8] ?
Je l'ai fait en simulant ton fichier et ça marchait. Si tu ne daignes pas joindre un fichier je ne peux plus rien pour toi !...
 
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

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
 
- 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
15
Affichages
832
Réponses
4
Affichages
145
Réponses
3
Affichages
673
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…