Vb excel [Résolu]

Signaler
Messages postés
19
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
25 janvier 2010
-
Messages postés
19
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
25 janvier 2010
-
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

Messages postés
4
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
21 janvier 2010

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
Messages postés
4
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
21 janvier 2010

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
Messages postés
19
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
25 janvier 2010

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
Messages postés
19
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
25 janvier 2010

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.