Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mettre en majuscule

18 réponses
Avatar
Demokos
Bonjour à toutes et à tous.

Comment faire, en VBA, pour que chaque entrée soit mise en majuscule ?

Par avance merci

10 réponses

1 2
Avatar
FS
Bonjour,

Par exemple, pour la plage A1:F30 de la feuille active :

Sub essai()
Dim cell As Range
For Each cell In Range("A1:F30")
cell.Value = UCase(cell.Value)
Next cell
End Sub

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

Demokos a écrit :
Bonjour à toutes et à tous.

Comment faire, en VBA, pour que chaque entrée soit mise en majuscule ?

Par avance merci


Avatar
MichDenis
Bonjour,

Dans le module feuille de ta feuille de calcul où l'action se déroule,
copie ce qui suit :
Dans l'exemple suivant, la mise en majuscule s'applique pour
la plage A1:G25 seulement. À toi de déterminer quelle est la
plage de la feuille de ton application où la macro doit être effective.

'------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg As Range, C As Range
Set Rg = Intersect(Target, Range("A1:G25"))
If Not Rg Is Nothing Then
For Each C In Rg
C.Value = UCase(C.Value)
Next
End If

End Sub
'------------------------------



"Demokos" a écrit dans le message de groupe de discussion :
4a9bc9ac$0$31263$
Bonjour à toutes et à tous.

Comment faire, en VBA, pour que chaque entrée soit mise en majuscule ?

Par avance merci
Avatar
Demokos
Merci à FS et à MichDenis,
mais y a-t-il une façon de faire en sorte que ça s'applique à toute la
feuille, et non seulement à une plage ? Range("A1:IV65535"), peut-être
?(XL 2003)


MichDenis a écrit :
Bonjour,

Dans le module feuille de ta feuille de calcul où l'action se déroule,
copie ce qui suit :
Dans l'exemple suivant, la mise en majuscule s'applique pour
la plage A1:G25 seulement. À toi de déterminer quelle est la
plage de la feuille de ton application où la macro doit être effective.

'------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg As Range, C As Range
Set Rg = Intersect(Target, Range("A1:G25"))
If Not Rg Is Nothing Then
For Each C In Rg
C.Value = UCase(C.Value)
Next
End If

End Sub
'------------------------------



"Demokos" a écrit dans le message de groupe de discussion :
4a9bc9ac$0$31263$
Bonjour à toutes et à tous.

Comment faire, en VBA, pour que chaque entrée soit mise en majuscule ?

Par avance merci



Avatar
MichDenis
Utilise ce code :
'---------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range
For Each C In Target
Application.EnableEvents = False
If C <> "" Then
C.Value = UCase(C.Value)
End If
Application.EnableEvents = True
Next
End Sub
'---------------------------------

"Demokos" a écrit dans le message de groupe de discussion :
4a9bd3b0$0$22558$
Merci à FS et à MichDenis,
mais y a-t-il une façon de faire en sorte que ça s'applique à toute la
feuille, et non seulement à une plage ? Range("A1:IV65535"), peut-être
?(XL 2003)


MichDenis a écrit :
Bonjour,

Dans le module feuille de ta feuille de calcul où l'action se déroule,
copie ce qui suit :
Dans l'exemple suivant, la mise en majuscule s'applique pour
la plage A1:G25 seulement. À toi de déterminer quelle est la
plage de la feuille de ton application où la macro doit être effective.

'------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg As Range, C As Range
Set Rg = Intersect(Target, Range("A1:G25"))
If Not Rg Is Nothing Then
For Each C In Rg
C.Value = UCase(C.Value)
Next
End If

End Sub
'------------------------------



"Demokos" a écrit dans le message de groupe de discussion :
4a9bc9ac$0$31263$
Bonjour à toutes et à tous.

Comment faire, en VBA, pour que chaque entrée soit mise en majuscule ?

Par avance merci



Avatar
MichDenis
Bonjour Garnote,

Et si tu fais un copier-coller de données qui proviennent d'une autre
feuille, est-ce que ta procédure fonctionne encore ?

Si tu sélectionnes une plage de cellules, appuies sur la touche F2
et entres une chaîne de caractère et que tu valides par Ctrl + Maj + Enter
Est-ce que ta procédure fonctionne toujours ?




"garnote" a écrit dans le message de groupe de discussion :

Bonjour,

Essaie ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then Target.Value = UCase(Target.Value)
End Sub

Serge



"Demokos" a écrit dans le message de news:
4a9bd3b0$0$22558$
Merci à FS et à MichDenis,
mais y a-t-il une façon de faire en sorte que ça s'applique à toute la
feuille, et non seulement à une plage ? Range("A1:IV65535"), peut-être
?(XL 2003)


MichDenis a écrit :
Bonjour,

Dans le module feuille de ta feuille de calcul où l'action se déroule,
copie ce qui suit :
Dans l'exemple suivant, la mise en majuscule s'applique pour
la plage A1:G25 seulement. À toi de déterminer quelle est la
plage de la feuille de ton application où la macro doit être effective.

'------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg As Range, C As Range
Set Rg = Intersect(Target, Range("A1:G25"))
If Not Rg Is Nothing Then
For Each C In Rg
C.Value = UCase(C.Value)
Next
End If

End Sub
'------------------------------



"Demokos" a écrit dans le message de groupe de
discussion : 4a9bc9ac$0$31263$
Bonjour à toutes et à tous.

Comment faire, en VBA, pour que chaque entrée soit mise en majuscule ?

Par avance merci




Avatar
garnote
Ave le magicien,

J'avais la même chose mais sans
Application.EnableEvents = False
et
Application.EnableEvents = True
Pas osé publier ma patente, beaucoup trop lent c'était.

Quant au clic et double-clic sur un même bouton,
il me semble avoir déjà vu cette possibilité ici-même
il y a plusieurs années.

Serge



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

Utilise ce code :
'---------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range
For Each C In Target
Application.EnableEvents = False
If C <> "" Then
C.Value = UCase(C.Value)
End If
Application.EnableEvents = True
Next
End Sub
'---------------------------------

"Demokos" a écrit dans le message de groupe de
discussion :
4a9bd3b0$0$22558$
Merci à FS et à MichDenis,
mais y a-t-il une façon de faire en sorte que ça s'applique à toute la
feuille, et non seulement à une plage ? Range("A1:IV65535"), peut-être
?(XL 2003)


MichDenis a écrit :
Bonjour,

Dans le module feuille de ta feuille de calcul où l'action se déroule,
copie ce qui suit :
Dans l'exemple suivant, la mise en majuscule s'applique pour
la plage A1:G25 seulement. À toi de déterminer quelle est la
plage de la feuille de ton application où la macro doit être effective.

'------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg As Range, C As Range
Set Rg = Intersect(Target, Range("A1:G25"))
If Not Rg Is Nothing Then
For Each C In Rg
C.Value = UCase(C.Value)
Next
End If

End Sub
'------------------------------



"Demokos" a écrit dans le message de groupe de
discussion :
4a9bc9ac$0$31263$
Bonjour à toutes et à tous.

Comment faire, en VBA, pour que chaque entrée soit mise en majuscule ?

Par avance merci





Avatar
MichDenis
Bonjour Frédéric,

| Utilise plutôt Cells pour toute la feuille (mais ça va ramer !)

J'aurais utilisé cells peut être mais avec usedrange.cells
ça peut toujours ramer mais moins fort !!!
Voire même
UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues).Cells
ça dépend de la grosseur de la gourde d'eau !
;-)
Avatar
MichDenis
| Quant au clic et double-clic sur un même bouton,
| il me semble avoir déjà vu cette possibilité ici-même
| il y a plusieurs années.

Je ne dis pas que cela ne fonctionne pas, mais il y a au
moins une restriction, celle de ne pas avoir aussi pour le
même bouton un événement Clic.
Avatar
garnote
Je n'avais pas non plus le
If C <> "" Then
mais est-ce vraiment nécessaire ?


"garnote" a écrit dans le message de news:
%
Ave le magicien,

J'avais la même chose mais sans
Application.EnableEvents = False
et
Application.EnableEvents = True
Pas osé publier ma patente, beaucoup trop lent c'était.

Quant au clic et double-clic sur un même bouton,
il me semble avoir déjà vu cette possibilité ici-même
il y a plusieurs années.

Serge



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

Utilise ce code :
'---------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range
For Each C In Target
Application.EnableEvents = False
If C <> "" Then
C.Value = UCase(C.Value)
End If
Application.EnableEvents = True
Next
End Sub
'---------------------------------

"Demokos" a écrit dans le message de groupe de
discussion :
4a9bd3b0$0$22558$
Merci à FS et à MichDenis,
mais y a-t-il une façon de faire en sorte que ça s'applique à toute la
feuille, et non seulement à une plage ? Range("A1:IV65535"), peut-être
?(XL 2003)


MichDenis a écrit :
Bonjour,

Dans le module feuille de ta feuille de calcul où l'action se déroule,
copie ce qui suit :
Dans l'exemple suivant, la mise en majuscule s'applique pour
la plage A1:G25 seulement. À toi de déterminer quelle est la
plage de la feuille de ton application où la macro doit être effective.

'------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg As Range, C As Range
Set Rg = Intersect(Target, Range("A1:G25"))
If Not Rg Is Nothing Then
For Each C In Rg
C.Value = UCase(C.Value)
Next
End If

End Sub
'------------------------------



"Demokos" a écrit dans le message de groupe de
discussion :
4a9bc9ac$0$31263$
Bonjour à toutes et à tous.

Comment faire, en VBA, pour que chaque entrée soit mise en majuscule ?

Par avance merci









Avatar
LSteph
Bonjour,
..une possibilité:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
Application.EnableEvents = False
With Target.Cells
For i = 1 To .Count
.Item(i) = UCase(.Item(i))
Next
End With
Application.EnableEvents = True
End Sub

'lSteph

On 31 août, 15:44, Demokos wrote:
Merci à FS et à MichDenis,
mais y a-t-il une façon de faire en sorte que ça s'applique à toute la
feuille, et non seulement à une plage ? Range("A1:IV65535"), peut-êtr e
?(XL 2003)

MichDenis a écrit :



> Bonjour,

> Dans le module feuille de ta feuille de calcul où l'action se dérou le,
> copie ce qui suit :
> Dans l'exemple suivant, la mise en majuscule s'applique pour
> la plage A1:G25 seulement. À toi de déterminer quelle est la
> plage de la feuille de ton application où la macro doit être effect ive.

> '------------------------------
> Private Sub Worksheet_Change(ByVal Target As Range)

> Dim Rg As Range, C As Range
> Set Rg = Intersect(Target, Range("A1:G25"))
> If Not Rg Is Nothing Then
>     For Each C In Rg
>         C.Value = UCase(C.Value)
>     Next
> End If

> End Sub
> '------------------------------

> "Demokos" a écrit dans le message de groupe de discussion :
> 4a9bc9ac$0$31263$
> Bonjour à toutes et à tous.

> Comment faire, en VBA, pour que chaque entrée soit mise en majuscule ?

> Par avance merci- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


1 2