Descendre à la cellule suivante

Résolu/Fermé
Olive - 21 juil. 2008 à 11:58
 Olive - 22 juil. 2008 à 12:12
Bonjour,
Cela m'embête de vous demander un truc aussi simple mais je viens de débuter dans VBA.

Problème N°1 :
Je m'explique, j'ai une liste de nom de personnes comme ci-dessous et je voudrais utilisé une macro qui me permet de mettre en gras le dernier nom de la personne.

Nom1
Nom1
Nom1 => nom en gras
Nom2
Nom2
Nom2
Nom2 => nom en gras
Nom3
Nom3
Nom3
Nom3 => nom en gras
Nom4
Nom4 => nom en gras

En fait, j'ai un deuxième problème le voici :
Problème N°2 :
Mon nombre de ligne de ma liste est aléatoire toute les semaines donc des semaines je peux avoir 4 noms différents dans ma liste ou d'autres semaines je peux avoir une douzaines de noms différents. Mon problème, ici, est que je n'arrive pas à donner une limite aléatoire à ma macro.

Voici mon essai de macro :

Sub FR_NoircirVendeurs()

Dim Plage As Range
Dim Cellule As Range

Set Plage = Range("B2:...") => mon Problème N°2

For Each Cellule In Plage

If Cellule.Value = Cellule.Offset(1, 0).Value Then
Step 1 => mon problème N° se trouve ici (je pense)
End If
Next Cellule

If Cellule.Value <> Cellule.Offset(1, 0).Value Then
Cellule.Font.Bold = True
End If
Next Cellule

End Sub

J'espère que j'ai été assez clair dans mes explications.
Je vous remercie d'avance pour toutes aides que vous pourrez m'apportées.

Ps : merci à commentcamarche.net qui m'aide dans mon apprentissage à VBA.

1 réponse

Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
21 juil. 2008 à 15:59
Bonjour Olive,
sans passer par VBA, tu peux mettre en gras le dernier nom en utilisant la mise en forme conditionnelle (mettre la cellule en gras si son contenu est différent du contenu de la cellule suivante)

si tu veux absolument passer par ta macro :
1°) supprime carrément cette partie, qui est incorrecte et ne sert à rien. Le For Each ... Next passe tout seul d'une cellule à la suivante, inutile d'en rajouter.
If Cellule.Value = Cellule.Offset(1, 0).Value Then
Step 1 => mon problème N° se trouve ici (je pense)
End If
Next Cellule

2°) Puisque tes cellules à traiter se suivent, utilise la fonction .End(xlDown) pour trouver la fin de ta plage. Ca revient à faire Maj+Ctrl+flèche du bas à partir de B2.
Set Plage = Range(Range("B2"), Range("B2").End(xlDown))

I.
4
Bonjour Ivan-hoe, je te remercie pour ton aide qui m'a permis de me débloquer. J'ai utilisé la macro (qui marche très bien) parce que je n'ai pas su utiliser la mise en forme conditionnelle.
Peut-être que plus tard je ferais encore appel à ce forum.
A bientôt
0