[VBA] Appliquer une macro sur tout une page
Cadwel
-
Cadwel -
Cadwel -
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.
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.
A voir également:
- [VBA] Appliquer une macro sur tout une page
- Comment supprimer une page sur word - Guide
- Imprimer tableau excel sur une page - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Comment supprimer une application préinstallée sur android - Guide
- Desinstaller une application sur windows - Guide
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.
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.