Vb excel

Résolu
leure007 Messages postés 19 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 25 janvier 2010 - 20 janv. 2010 à 12:47
leure007 Messages postés 19 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 25 janvier 2010 - 25 janv. 2010 à 10:23
Bonjour,

Je désire réaliser la macro suivante dans excel (2003) en VB.

Dans une plage (A1 :G40) se trouvent des formules (qui renvoient à des valeurs situées dans d’autres feuilles). Certaines cellules renvoient le valeur #NA.
Le but de la macro est de remplacer les valeurs #NA par la (première) valeur (qui ne soit pas #NA) se trouvant dans la cellule la plus proche, en haut, dans la même colonne.

Exemple :

B4 (valeur 10)
B5 (valeur 15)
B6 (valeur 12)
B7 (valeur #NA)
B8 (valeur #NA)

Devient :

B4 (valeur 10)
B5 (valeur 15)
B6 (valeur 12)
B7 (valeur 12)
B8 (valeur 12)

Quelqu’un peut-il m’aider ?
Un grand merci pour tout conseil.

4 réponses

Frost29 Messages postés 4 Date d'inscription jeudi 2 avril 2009 Statut Membre Dernière intervention 21 janvier 2010
21 janv. 2010 à 15:28
Le code que j'ai posté ne fonctionne que pour ton exemple avec la colonne B à partir de la cellule B4.

Effectivement il ne parcourt pas toute la plage comme dans celui que tu viens de poster.

Je pensais que ce qui t'intéressais en priorité c'était la fonction de test "IsError", dont ton ami s'est d'ailleurs servi pour faire ce code.

Bonne journée
Michaël
3
Frost29 Messages postés 4 Date d'inscription jeudi 2 avril 2009 Statut Membre Dernière intervention 21 janvier 2010
20 janv. 2010 à 13:19
Bonjour,

Essaie ce code :

Dim i As Integer
i = 4
While Cells(i, 2).Value <> ""
If WorksheetFunction.IsError(Cells(i, 2)) True Then Cells(i, 2) Cells(i - 1, 2)
i = i + 1
Wend

Ici la macro parcours la colonne 2 à partir de la cellule "B4" comme dans ton exemple.

Michaël
0
leure007 Messages postés 19 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 25 janvier 2010
21 janv. 2010 à 14:53
Merci Michaël.
Mais cela n'a pas marché...
Un ami m'a transmis le code suivant qui fonctionne. J'espère que cela sera utile à ce forum.

Sub ReplaceNA()

Dim ThisSheet As Worksheet
Dim DerCol, DerLigne, I, J, NomFenetre, NomFenetress, CheminFichierCours, NomSheet, ValeurPrecedante

Set ThisSheet = ActiveSheet

Range("B15").Select
Selection.End(xlToRight).Select
DerCol = ActiveCell.Column

Selection.End(xlDown).Select
DerLigne = ActiveCell.Row
NomSheet = ThisSheet.Name

For I = 2 To DerCol

For J = 15 To DerLigne
Worksheets(NomSheet).Cells(J, I).Select
If IsError(ActiveCell.Value) Then
ActiveCell.Value = ValeurPrecedante
Else
ValeurPrecedante = ActiveCell.Value
End If

Next

Next
End Sub
0
leure007 Messages postés 19 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 25 janvier 2010
25 janv. 2010 à 10:23
Bonjour,

Soit deux colonnes (A et B) dont certaines cellules sont les mêmes. Je désire inscrire dans les cellules d’une troisième colonne (C), une fonction qui rende uniquement les cellules qui sont les mêmes (ou ont la même valeur) dans les deux premières colonnes (A et B).
Exemple :
colA colB colC
X K Z
Y Z W
Z F
W Q
V W



Quelqu’un peut-il m’aider ?
Un grand merci d’avance.
0
Rejoignez-nous