OVH Cloud OVH Cloud

Majuscules once again...

8 réponses
Avatar
AB
Bonjour à tous,
Désolé d'ouvrir un nouveau fil pour un sujet déjà traité. Ca va tellement
vite sur ce forum que les fils anciens se perdent dans les profondeurs de
mon écran.

Je rappelle le problème : je souhaite par macro mettre en majuscules, soit
les cellules sélectionnées, soit, si je clique sur l'en tête d'une colonne,
toute la colonne concernée.
michdenis (merci à lui et aux autres contributeurs) m'a proposé ce code :

Sub Majuscule()

Dim Rg As Range
If TypeName(Selection) = "Range" Then
On Error Resume Next
Set Rg = Selection.SpecialCells(xlCellTypeConstants)
For Each C In Rg
C.Value = UCase(C)
Next
End If
End Sub

J'ai cru que ça marchait (j'ai du tester trop vite). Ca marche, mais ça me
met en majuscules toutes les cellules de la feuille contenant du texte. Pas
vraiment ce que je voulais...
Où est l'erreur ?
AB

8 réponses

Avatar
PMO
Bonjour,

Une piste avec le code suivant à copier dans un module standard.

'*************************
Sub PMO_Majuscule()
Dim R As Range
Dim var
Dim i&
Dim j&
Set R = Range(Selection.Address)
var = R
For i& = 1 To UBound(var, 1)
For j& = 1 To UBound(var, 2)
var(i&, j&) = UCase(var(i&, j&))
Next j&
Next i&
R = var
End Sub
'*************************

Cordialement.
--
PMO
Patrick Morange



Bonjour à tous,
Désolé d'ouvrir un nouveau fil pour un sujet déjà traité. Ca va tellement
vite sur ce forum que les fils anciens se perdent dans les profondeurs de
mon écran.

Je rappelle le problème : je souhaite par macro mettre en majuscules, soit
les cellules sélectionnées, soit, si je clique sur l'en tête d'une colonne,
toute la colonne concernée.
michdenis (merci à lui et aux autres contributeurs) m'a proposé ce code :

Sub Majuscule()

Dim Rg As Range
If TypeName(Selection) = "Range" Then
On Error Resume Next
Set Rg = Selection.SpecialCells(xlCellTypeConstants)
For Each C In Rg
C.Value = UCase(C)
Next
End If
End Sub

J'ai cru que ça marchait (j'ai du tester trop vite). Ca marche, mais ça me
met en majuscules toutes les cellules de la feuille contenant du texte. Pas
vraiment ce que je voulais...
Où est l'erreur ?
AB





Avatar
AB
Bonjour Patrick,
Et merci de ton aide.
Ton code fonctionne parfaitement si je sélectionne plusieurs cellules ou
toute une colonne.
Si je sélectionne une seule cellule, ça plante.
Il faut donc tester si la sélection comporte une seule cellule ou non, je
suppose...
Je suis trop nul en VBA pour écrire ça...
André



"PMO" <patrickPOINTmorangeAROBASElapostePOINTnet> a écrit dans le message de
news:
Bonjour,

Une piste avec le code suivant à copier dans un module standard.

'*************************
Sub PMO_Majuscule()
Dim R As Range
Dim var
Dim i&
Dim j&
Set R = Range(Selection.Address)
var = R
For i& = 1 To UBound(var, 1)
For j& = 1 To UBound(var, 2)
var(i&, j&) = UCase(var(i&, j&))
Next j&
Next i&
R = var
End Sub
'*************************

Cordialement.
--
PMO
Patrick Morange



Bonjour à tous,
Désolé d'ouvrir un nouveau fil pour un sujet déjà traité. Ca va tellement
vite sur ce forum que les fils anciens se perdent dans les profondeurs de
mon écran.

Je rappelle le problème : je souhaite par macro mettre en majuscules,
soit
les cellules sélectionnées, soit, si je clique sur l'en tête d'une
colonne,
toute la colonne concernée.
michdenis (merci à lui et aux autres contributeurs) m'a proposé ce code :

Sub Majuscule()

Dim Rg As Range
If TypeName(Selection) = "Range" Then
On Error Resume Next
Set Rg = Selection.SpecialCells(xlCellTypeConstants)
For Each C In Rg
C.Value = UCase(C)
Next
End If
End Sub

J'ai cru que ça marchait (j'ai du tester trop vite). Ca marche, mais ça
me
met en majuscules toutes les cellules de la feuille contenant du texte.
Pas
vraiment ce que je voulais...
Où est l'erreur ?
AB







Avatar
docm
Bonjour.

Sub PMO_Majuscule()

Dim sh As Worksheet
Set sh = ActiveSheet
d = DerniereLigne(sh)
c = DerniereColonne(sh)

For Each cel In Selection
cel.Value = UCase(cel.Value)
If cel.Row > d Or (cel.Row = d And cel.Column = c) Then
Exit For
End If
Next

End Sub

Function DerniereLigne(sh As Worksheet)
On Error Resume Next
DerniereLigne = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:úlse).Row
On Error GoTo 0
End Function

Function DerniereColonne(sh As Worksheet)
On Error Resume Next
DerniereColonne = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:úlse).Column
On Error GoTo 0
End Function

docm

"AB" a écrit dans le message news:

Bonjour à tous,
Désolé d'ouvrir un nouveau fil pour un sujet déjà traité. Ca va tellement
vite sur ce forum que les fils anciens se perdent dans les profondeurs de
mon écran.

Je rappelle le problème : je souhaite par macro mettre en majuscules, soit
les cellules sélectionnées, soit, si je clique sur l'en tête d'une
colonne,

toute la colonne concernée.
michdenis (merci à lui et aux autres contributeurs) m'a proposé ce code :

Sub Majuscule()

Dim Rg As Range
If TypeName(Selection) = "Range" Then
On Error Resume Next
Set Rg = Selection.SpecialCells(xlCellTypeConstants)
For Each C In Rg
C.Value = UCase(C)
Next
End If
End Sub

J'ai cru que ça marchait (j'ai du tester trop vite). Ca marche, mais ça me
met en majuscules toutes les cellules de la feuille contenant du texte.
Pas

vraiment ce que je voulais...
Où est l'erreur ?
AB




Avatar
AB
Merci docteur !
Ca marche parfaitement.
A+
AB

"docm" a écrit dans le message de news:

Bonjour.

Sub PMO_Majuscule()

Dim sh As Worksheet
Set sh = ActiveSheet
d = DerniereLigne(sh)
c = DerniereColonne(sh)

For Each cel In Selection
cel.Value = UCase(cel.Value)
If cel.Row > d Or (cel.Row = d And cel.Column = c) Then
Exit For
End If
Next

End Sub

Function DerniereLigne(sh As Worksheet)
On Error Resume Next
DerniereLigne = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:úlse).Row
On Error GoTo 0
End Function

Function DerniereColonne(sh As Worksheet)
On Error Resume Next
DerniereColonne = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:úlse).Column
On Error GoTo 0
End Function

docm

"AB" a écrit dans le message news:

Bonjour à tous,
Désolé d'ouvrir un nouveau fil pour un sujet déjà traité. Ca va tellement
vite sur ce forum que les fils anciens se perdent dans les profondeurs de
mon écran.

Je rappelle le problème : je souhaite par macro mettre en majuscules,
soit
les cellules sélectionnées, soit, si je clique sur l'en tête d'une
colonne,

toute la colonne concernée.
michdenis (merci à lui et aux autres contributeurs) m'a proposé ce code :

Sub Majuscule()

Dim Rg As Range
If TypeName(Selection) = "Range" Then
On Error Resume Next
Set Rg = Selection.SpecialCells(xlCellTypeConstants)
For Each C In Rg
C.Value = UCase(C)
Next
End If
End Sub

J'ai cru que ça marchait (j'ai du tester trop vite). Ca marche, mais ça
me
met en majuscules toutes les cellules de la feuille contenant du texte.
Pas

vraiment ce que je voulais...
Où est l'erreur ?
AB








Avatar
ChrisV
Bonjour AB,

Sub zaza()
Dim c As Range
Application.ScreenUpdating = False
If Application.CountA(Selection) = 0 Then Exit Sub
With Selection
If .Count > 1 Then
On Error Resume Next
.SpecialCells(xlCellTypeConstants, 23).Select
If Err.Number = 0 Then
For Each c In Selection
c.Value = UCase(c)
Next c
End If
Else
If .HasFormula = True Then Exit Sub
.Value = UCase(.Value)
End If
End With
End Sub


ChrisV


"AB" a écrit dans le message de news:

Bonjour à tous,
Désolé d'ouvrir un nouveau fil pour un sujet déjà traité. Ca va tellement
vite sur ce forum que les fils anciens se perdent dans les profondeurs de
mon écran.

Je rappelle le problème : je souhaite par macro mettre en majuscules, soit
les cellules sélectionnées, soit, si je clique sur l'en tête d'une
colonne, toute la colonne concernée.
michdenis (merci à lui et aux autres contributeurs) m'a proposé ce code :

Sub Majuscule()

Dim Rg As Range
If TypeName(Selection) = "Range" Then
On Error Resume Next
Set Rg = Selection.SpecialCells(xlCellTypeConstants)
For Each C In Rg
C.Value = UCase(C)
Next
End If
End Sub

J'ai cru que ça marchait (j'ai du tester trop vite). Ca marche, mais ça me
met en majuscules toutes les cellules de la feuille contenant du texte.
Pas vraiment ce que je voulais...
Où est l'erreur ?
AB



Avatar
docm
Correction, pour ne pas effacer les formules :

For Each cel In Selection
If cel.Value <> "" Then
If cel.HasFormula = True Then
Else
cel.Value = UCase(cel.Value)
End If
End If
If cel.Row > d Or (cel.Row = d And cel.Column = c) Then
Exit For
End If
Next

"AB" a écrit dans le message news:

Merci docteur !
Ca marche parfaitement.
A+
AB

"docm" a écrit dans le message de news:

Bonjour.

Sub PMO_Majuscule()

Dim sh As Worksheet
Set sh = ActiveSheet
d = DerniereLigne(sh)
c = DerniereColonne(sh)

For Each cel In Selection
cel.Value = UCase(cel.Value)
If cel.Row > d Or (cel.Row = d And cel.Column = c) Then
Exit For
End If
Next

End Sub

Function DerniereLigne(sh As Worksheet)
On Error Resume Next
DerniereLigne = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:úlse).Row
On Error GoTo 0
End Function

Function DerniereColonne(sh As Worksheet)
On Error Resume Next
DerniereColonne = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:úlse).Column
On Error GoTo 0
End Function

docm

"AB" a écrit dans le message news:

Bonjour à tous,
Désolé d'ouvrir un nouveau fil pour un sujet déjà traité. Ca va
tellement



vite sur ce forum que les fils anciens se perdent dans les profondeurs
de



mon écran.

Je rappelle le problème : je souhaite par macro mettre en majuscules,
soit
les cellules sélectionnées, soit, si je clique sur l'en tête d'une
colonne,

toute la colonne concernée.
michdenis (merci à lui et aux autres contributeurs) m'a proposé ce code
:




Sub Majuscule()

Dim Rg As Range
If TypeName(Selection) = "Range" Then
On Error Resume Next
Set Rg = Selection.SpecialCells(xlCellTypeConstants)
For Each C In Rg
C.Value = UCase(C)
Next
End If
End Sub

J'ai cru que ça marchait (j'ai du tester trop vite). Ca marche, mais ça
me
met en majuscules toutes les cellules de la feuille contenant du texte.
Pas

vraiment ce que je voulais...
Où est l'erreur ?
AB












Avatar
AB
Excellent !
Merci beaucoup.
AB

"ChrisV" a écrit dans le message de news:

Bonjour AB,

Sub zaza()
Dim c As Range
Application.ScreenUpdating = False
If Application.CountA(Selection) = 0 Then Exit Sub
With Selection
If .Count > 1 Then
On Error Resume Next
.SpecialCells(xlCellTypeConstants, 23).Select
If Err.Number = 0 Then
For Each c In Selection
c.Value = UCase(c)
Next c
End If
Else
If .HasFormula = True Then Exit Sub
.Value = UCase(.Value)
End If
End With
End Sub


ChrisV


"AB" a écrit dans le message de news:

Bonjour à tous,
Désolé d'ouvrir un nouveau fil pour un sujet déjà traité. Ca va tellement
vite sur ce forum que les fils anciens se perdent dans les profondeurs de
mon écran.

Je rappelle le problème : je souhaite par macro mettre en majuscules,
soit les cellules sélectionnées, soit, si je clique sur l'en tête d'une
colonne, toute la colonne concernée.
michdenis (merci à lui et aux autres contributeurs) m'a proposé ce code :

Sub Majuscule()

Dim Rg As Range
If TypeName(Selection) = "Range" Then
On Error Resume Next
Set Rg = Selection.SpecialCells(xlCellTypeConstants)
For Each C In Rg
C.Value = UCase(C)
Next
End If
End Sub

J'ai cru que ça marchait (j'ai du tester trop vite). Ca marche, mais ça
me met en majuscules toutes les cellules de la feuille contenant du
texte. Pas vraiment ce que je voulais...
Où est l'erreur ?
AB







Avatar
ChrisV
De rien... ;-)


ChrisV


"AB" a écrit dans le message de news:

Excellent !
Merci beaucoup.
AB

"ChrisV" a écrit dans le message de news:

Bonjour AB,

Sub zaza()
Dim c As Range
Application.ScreenUpdating = False
If Application.CountA(Selection) = 0 Then Exit Sub
With Selection
If .Count > 1 Then
On Error Resume Next
.SpecialCells(xlCellTypeConstants, 23).Select
If Err.Number = 0 Then
For Each c In Selection
c.Value = UCase(c)
Next c
End If
Else
If .HasFormula = True Then Exit Sub
.Value = UCase(.Value)
End If
End With
End Sub


ChrisV


"AB" a écrit dans le message de news:

Bonjour à tous,
Désolé d'ouvrir un nouveau fil pour un sujet déjà traité. Ca va
tellement vite sur ce forum que les fils anciens se perdent dans les
profondeurs de mon écran.

Je rappelle le problème : je souhaite par macro mettre en majuscules,
soit les cellules sélectionnées, soit, si je clique sur l'en tête d'une
colonne, toute la colonne concernée.
michdenis (merci à lui et aux autres contributeurs) m'a proposé ce code
:

Sub Majuscule()

Dim Rg As Range
If TypeName(Selection) = "Range" Then
On Error Resume Next
Set Rg = Selection.SpecialCells(xlCellTypeConstants)
For Each C In Rg
C.Value = UCase(C)
Next
End If
End Sub

J'ai cru que ça marchait (j'ai du tester trop vite). Ca marche, mais ça
me met en majuscules toutes les cellules de la feuille contenant du
texte. Pas vraiment ce que je voulais...
Où est l'erreur ?
AB