[VBA] Appliquer une macro sur tout une page

Fermé
Cadwel - 26 mars 2008 à 14:27
 Cadwel - 7 avril 2008 à 09:54
Bonjour,

D'abord j'ai un niveau débutant en programmation donc en VBA aussi.
Mais je suis sur que la difficulté que je rencontre est très simple pour quelqu'un d'initié.

Voila je fais une macro qui va concatener et me mettre en forme comme je voudrais dans la cellule concatenée.

Sub ConcatGras()

Cells(2, 1).Value = Cells(2, 2).Value & Cells(2, 3).Value & Cells(2, 4).Value & Cells(2, 5).Value
Cells(2, 1).Characters(Start:=1, Length:=Len(Cells(2, 2).Value)).Font.ColorIndex = xautomatic
Cells(2, 1).Characters(Start:=Len(Cells(2, 2).Value) + 1, Length:=Len(Cells(2, 3).Value)).Font.Bold = True
Cells(2, 1).Characters(Start:=Len(Cells(2, 2).Value) + Len(Cells(2, 3).Value) + 1, Length:=Len(Cells(2, 4).Value)).Font.Bold = True
Cells(2, 1).Characters(Start:=Len(Cells(2, 2).Value) + Len(Cells(2, 3).Value) + Len(Cells(2, 4).Value) + 1, Length:=Len(Cells(2, 5).Value)).Font.ColorIndex = xautomatic

End Sub

Donc ca me concatène B2 C2 D2 E2 et ca me met en gras ce qu'il y avait dans C2 et D2.
Jusque la pas de soucis ca fonctionne, mais je voudrais que ca le fasse jusqu'en bas de ma page excel.

Alors je crois qu'on peut le faire de cette facon :

Sub ConcatGras()
Dim Cel_C As Range

Range("A2:A" & Range("A65536").End(xlUp).Row).Select
For Each Cel_C In Selection
Cells(2, 1).Value = Cells(2, 2).Value & Cells(2, 3).Value & Cells(2, 4).Value & Cells(2, 5).Value
Cells(2, 1).Characters(Start:=1, Length:=Len(Cells(2, 2).Value)).Font.ColorIndex = xautomatic
Cells(2, 1).Characters(Start:=Len(Cells(2, 2).Value) + 1, Length:=Len(Cells(2, 3).Value)).Font.Bold = True
Cells(2, 1).Characters(Start:=Len(Cells(2, 2).Value) + Len(Cells(2, 3).Value) + 1, Length:=Len(Cells(2, 4).Value)).Font.Bold = True
Cells(2, 1).Characters(Start:=Len(Cells(2, 2).Value) + Len(Cells(2, 3).Value) + Len(Cells(2, 4).Value) + 1, Length:=Len(Cells(2, 5).Value)).Font.ColorIndex = xautomatic
Next
End Sub

Mais voila je sais pas quoi mettre dans mes coordonnées de cellules pour la faire fonctionner.

Si quelqu'un pouvait me donner un coup de main, merci.

2 réponses

Bonjour,

J'ai souvent renvontré ce problème. je vais te donner la solution suivante mais attention, il faut l'appliquer sur une colonne dans laquelle tu es sûre qu'il y aura toujours une donnée.

La voici
sub macro
i=1 (i = 1 si c'est la première ligne qui est concernée, si ton tableau commenca à la ligne 10, tu mets i=10)
a=i
j=1 ( de même que la première ligne, il faut que tu mettes un numéro de colonne qui n'est jamais vide)
cells(i,j).select
do while selection <> ""
i=i+1
cells(i,j).select
loop

do while a=i

tu mets ta macro de concatener

a=a+1
loop
end sub

N'hésite pas si tu as des soucis
a, i, j sont des variables.
0
Merci melanie pour ta réponse.
Je vais essayer la solution que tu proposes.
0