Re : besoin d'aide pour macro Excel
Bonjour et bienvenu sur le forum EpineDark,
Tu es au bonne endroit : sur la partie "Excel" (il n'y a pas de sous forum : formules / VBA)
Private Sub Workbook_Open()
Sheets("PROPOSITION").Select
Dim i As Integer
Dim var As String
For i = 5 To range("D", i).End(xlUp).Row
range("D", i).Select
If range("D", i) <> "" Then
var = range("D", i).Value
MsgBox var
End If
Next
End Sub
Remarques :
1/ la
sélection de la cellule en cours de traitement n'apporte rien au traitement : ormis alourdir le code et le ralentir. Tu peux supprimer cette ligne purement et simplement.
2/ concernant la boucle
For... To ... Next, tu l'as écris de la façon suivante :
For TaVariable = ... To ...
...
Next
cela fonctionne et n'est pas faux en soit, mais le mieux est de l'écrire de la façon suivante :
For TaVariable = ... To ...
...
Next TaVariable
Lorsque tu as plusieurs boucles d'imbriqués les unes dans les autres, c'est plus facile pour s'y retrouver
3/ range("D", i).End(xlUp).Row Cette partie du code est franchement bizarre! Le placer ici oblige excel à recalculer la taille de ton tableau à CHAQUE exécution de la boucle. De plus utiliser une cellule "variable"!?!?
4/ range("D", i).End(xlUp).Row De plus, la bonne façon d'écrire est :
range("D" & i).End(xlUp).Row
Il faut entre le nom de la colonne et la variable contenant le numéro de la ligne le symbole "&"
5/ range("D", i).End(xlUp).Row
Autre problème avec ce code : tu utilse la colonne D pour connaître la taille de ton tableau en utilisant la fonction
.End(xlUp) or dans l'exposé de ton problème tu indique que cette colonne n'est pas toujours remplis! Donc ta macro ne balayera pas la totalité de ton tableau s'il y a des cellules vide à la FIN de ton tableau.
Pour la macro corrigé, je te laisse d'abord lire tout cela et étudier les solutions laissées par mes confrères (que je salut au passage) le temps que j'écrive ces quelques lignes.
A bientôt