limiter la mise en forme à la dernière cellule remplie

  • Initiateur de la discussion Initiateur de la discussion altinea
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

altinea

XLDnaute Accro
bonjour,

je souhaiterai pouvoir modifier cette macro afin qu'elle s'applique jusqu'à la dernière cellule remplie, cela évitera quelle ne fasse toutes les cellules de la colonne

Sub Uppercase()
'Boucle pour parcourir chaque cellule dans la plage spécifiée
For Each x In Range("A1:A5")
ici je pensai mettre ("a:a") et là à priori ça va jusque la dernière cellule de la colonne
' Modifier le texte dans la plage en majuscules
x.Value = UCase(x.value)
Next
End Sub
Merci pour votre aide
bonne soirée
 
Dernière édition:
Re : limiter la mise en forme à la dernière cellule remplie

Bonsoir Altinea, bonsoir le forum,

Peut-être comme ça :

Code:
Sub Uppercase()
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim x As Range

DL = Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A)
' Loop to cycle through each cell in the specified range.
For Each x In Range("A1:A" & DL)
    ' Change the text in the range to uppercase letters.
    x.Value = UCase(x.Value)
Next x
End Sub
 
Re : limiter la mise en forme à la dernière cellule remplie

Bonsoir Altinea, bonsoir le forum,

Peut-être comme ça :

Code:
Sub Uppercase()
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim x As Range

DL = Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A)
Set PL = Range("A1:A" & DL) 'définit la plage PL
DL = Cells(Application.Rows.Count, 4).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 4 (=D)
Set PL = Application.Union(PL, Range("D1:D" & DL)) 'redéfinit la plage PL

' Loop to cycle through each cell in the specified range.
For Each x In PL
    ' Change the text in the range to uppercase letters.
    x.Value = UCase(x.Value)
Next x
End Sub
 
Re : limiter la mise en forme à la dernière cellule remplie

le forum, Robert, merci, je pensai qu'il y aurait une formule permettant de définir plusieurs colonnes dans ce genre là :

Sub Uppercase()
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim x As Range

DL = Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A)
' Loop to cycle through each cell in the specified range.
For Each x In Range("A1:A" & DL,"c1:c" & DL,"h1:h" & DL)
' Change the text in the range to uppercase letters.
x.Value = UCase(x.Value)
Next x
End Sub

ce qui permettrai de façon plus simple de changer ou de rajouter des colonnes
merci encore pour ton aide
 
Re : limiter la mise en forme à la dernière cellule remplie

Bonsoir Altinea, bonsoir le forum,

On peut tout faire (ou presque) ! Il suffit de savoir au départ ce que l'on veut... Ce qui ne semble pas être ton cas...
 
Re : limiter la mise en forme à la dernière cellule remplie

Bonjour à tous

altinea
Une autre interprétation de la question en passant par une procédure événementielle
(et en espérant que j'ai bien compris la problématique)
A mettre dans le code de la feuille concernée (pas dans un module standard)
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim dl&
If Not Intersect(Target, Range("A:A,D:D")) Is Nothing Then
If Target.Count = 1 Then
dl = Cells(Rows.Count, Target.Column).End(3).Row
Cells(dl, Target.Column) = StrConv(Cells(dl, Target.Column), vbUpperCase)
End If
End If
End Sub
 
Re : limiter la mise en forme à la dernière cellule remplie

le forum, Robert ,Staple1600, merci
voilà ce que j'avais essayé avec les modifs de Robert, certes plus long
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim dl As Integer 'déclare la variable DL (Dernière Ligne)
Dim x As Range

dl = Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A)


'Boucle pour parcourir chaque cellule dans la plage spécifiée.
For Each x In Range("C1:C" & dl)
' Modifie le texte dans la plage en majuscules.
x.Value = UCase(x.Value)
Next x
For Each x In Range("O1:O" & dl)
' Modifie le texte dans la plage en majuscules.
x.Value = UCase(x.Value)
Next x
For Each x In Range("P1😛" & dl)
' Modifie le texte dans la plage en majuscules.
x.Value = UCase(x.Value)
Next x

'Boucle pour parcourir chaque cellule dans la plage spécifiée.
For Each x In Range("D1😀" & dl)
' Modifier le texte dans la plage en mettant la première lettre de chaque mot en majuscules.
x.Value = Application.Proper(x.Value)
Next
For Each x In Range("J1:J" & dl)
x.Value = Application.Proper(x.Value)
Next

End Sub


du coup chaque fois que je souhaite rajouter une colonne pour la mettre en forme je rajoute une module "For"

merci encore
 
Re : limiter la mise en forme à la dernière cellule remplie

Re

altinea
Actuellement je ne dispose de mon PC personnel et suis sous Excel 2003.

Peux-tu poster une version xls de ton fichier ou m'autoriser à utiliser un convertisseur online pour convertir ta pJ en fichier xls ?
 
Re : limiter la mise en forme à la dernière cellule remplie

Re

Tu as modifié le code alors là ou il ne fallait pas 😉
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 3 Then

J'avais mis
If Target.Count = 1 Then
Cette ligne sert à s'assurer qu'une seule cellule est active

Il faut donc juste modifier ceci
 
Dernière édition:
Re : limiter la mise en forme à la dernière cellule remplie

Houps

j'avais oublié le code VBA modifié
(test OK sur ta PJ)

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim dl&
If Not Intersect(Target, Range("C:C,E:E,G:G")) Is Nothing Then
If Target.Count = 1 Then
dl = Cells(Rows.Count, Target.Column).End(3).Row
Cells(dl, Target.Column) = StrConv(Cells(dl, Target.Column), vbUpperCase)
End If
End If
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
854
Réponses
7
Affichages
959
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
880
W
Réponses
4
Affichages
974
Willmaz
W
M
Réponses
2
Affichages
729
S
Réponses
0
Affichages
1 K
Stateaid
S
C
Réponses
4
Affichages
1 K
cecenico
C
Z
Réponses
7
Affichages
1 K
Zifox
Z
Retour