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

Arrêter une macro automatiquement

10 réponses
Avatar
AB
Bonjour à tous,

La macro ci-après met en majuscules la sélection.
Sub Majuscules()
For Each cell In Selection
cell.Value = UCase(cell.Formula)
Next
End Sub
Mais lorsque je sélectionne une colonne, elle boucle dans fin, et je doit
faire ESC pour l'arrêter.
Comment la modifier pour que, même si c'est toute une colonne qui est
sélectionnée, la macro s'arrête toute seule quand il n'y a plus de valeurs ?
AB

10 réponses

Avatar
Daniel
Bonjour.
Ajoute, avant next :
If cell.Row = 65536 Then Exit Sub
"AB" a écrit dans le message de news:

Bonjour à tous,

La macro ci-après met en majuscules la sélection.
Sub Majuscules()
For Each cell In Selection
cell.Value = UCase(cell.Formula)
Next
End Sub
Mais lorsque je sélectionne une colonne, elle boucle dans fin, et je doit
faire ESC pour l'arrêter.
Comment la modifier pour que, même si c'est toute une colonne qui est
sélectionnée, la macro s'arrête toute seule quand il n'y a plus de valeurs
?
AB





Avatar
AB
Bonjour Daniel,
Ca marche bien sûr, mais c'est franchement très long (plus long que
d'arrêter la macro à la main).
Tout ça avec un Celeron à 2.8 Gh et 1024 k de RAM : pas un avion, mais quand
même...
Pas moyen de sélectionner toutes les cellules d'une colonne, de la 1ère à la
dernière contenant des valeurs ?
Il me semblait qu'on pouvait faire ça à la main (avec F8 + CTRL quelque
chose), mais je ne retrouve plus...
AB

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

Bonjour.
Ajoute, avant next :
If cell.Row = 65536 Then Exit Sub
"AB" a écrit dans le message de news:

Bonjour à tous,

La macro ci-après met en majuscules la sélection.
Sub Majuscules()
For Each cell In Selection
cell.Value = UCase(cell.Formula)
Next
End Sub
Mais lorsque je sélectionne une colonne, elle boucle dans fin, et je doit
faire ESC pour l'arrêter.
Comment la modifier pour que, même si c'est toute une colonne qui est
sélectionnée, la macro s'arrête toute seule quand il n'y a plus de
valeurs ?
AB









Avatar
Pounet95
Bonjour, essaie ceci ern adaptant au besoin
Les données à mettre en majuscule sont en colonne A
Elles sont transformées en colonne B sous forme de majuscule
Ensuite la colonne B est recopuée en colonne A et effacée

temps mis : 1 grosse seconde
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

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

Bonjour Daniel,
Ca marche bien sûr, mais c'est franchement très long (plus long que
d'arrêter la macro à la main).
Tout ça avec un Celeron à 2.8 Gh et 1024 k de RAM : pas un avion, mais
quand même...
Pas moyen de sélectionner toutes les cellules d'une colonne, de la 1ère à
la dernière contenant des valeurs ?
Il me semblait qu'on pouvait faire ça à la main (avec F8 + CTRL quelque
chose), mais je ne retrouve plus...
AB

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

Bonjour.
Ajoute, avant next :
If cell.Row = 65536 Then Exit Sub
"AB" a écrit dans le message de news:

Bonjour à tous,

La macro ci-après met en majuscules la sélection.
Sub Majuscules()
For Each cell In Selection
cell.Value = UCase(cell.Formula)
Next
End Sub
Mais lorsque je sélectionne une colonne, elle boucle dans fin, et je
doit faire ESC pour l'arrêter.
Comment la modifier pour que, même si c'est toute une colonne qui est
sélectionnée, la macro s'arrête toute seule quand il n'y a plus de
valeurs ?
AB













Avatar
Pounet95
On dirait qu'il manque quelque chose ;o((((
Mille excuses en plus pour les fautes de frappe.

Donc le voilà , à recopier dans un module standard

Option Explicit

Sub Tout_Majuscule()
Dim lig As Long
'dernière cellule remplie en colonne A
lig = 65536
If [A65536] = "" Then lig = Range("A65536").End(xlUp).Row
Range("B1:B" & lig).Select
Selection.FormulaR1C1 = "=UPPER(RC[-1])"
Selection.Copy
Range("A1").Select
Selection.PasteSpecial xlValues
Columns(2).Clear
End Sub


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

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

Bonjour, essaie ceci ern adaptant au besoin
Les données à mettre en majuscule sont en colonne A
Elles sont transformées en colonne B sous forme de majuscule
Ensuite la colonne B est recopuée en colonne A et effacée

temps mis : 1 grosse seconde
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

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

Bonjour Daniel,
Ca marche bien sûr, mais c'est franchement très long (plus long que
d'arrêter la macro à la main).
Tout ça avec un Celeron à 2.8 Gh et 1024 k de RAM : pas un avion, mais
quand même...
Pas moyen de sélectionner toutes les cellules d'une colonne, de la 1ère à
la dernière contenant des valeurs ?
Il me semblait qu'on pouvait faire ça à la main (avec F8 + CTRL quelque
chose), mais je ne retrouve plus...
AB

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

Bonjour.
Ajoute, avant next :
If cell.Row = 65536 Then Exit Sub
"AB" a écrit dans le message de news:

Bonjour à tous,

La macro ci-après met en majuscules la sélection.
Sub Majuscules()
For Each cell In Selection
cell.Value = UCase(cell.Formula)
Next
End Sub
Mais lorsque je sélectionne une colonne, elle boucle dans fin, et je
doit faire ESC pour l'arrêter.
Comment la modifier pour que, même si c'est toute une colonne qui est
sélectionnée, la macro s'arrête toute seule quand il n'y a plus de
valeurs ?
AB
















Avatar
Jacky
Bonjour,

Ceci met en majuscule toute la colonne de la cellule sélectionnée.
'---------
Sub jj()
x = Chr(Selection.Columns.Column + 64)
derlg = Range(x & "65536").End(3).Row
For Each c In Range(Cells(1, x), Cells(derlg, x))
c.Value = UCase(c.Value)
Next
End Sub
'-----------
Ps: éviter d'utiliser l'instruction "cell" comme une variable, cela peut
provoquer un plantage d'Excel.
Salutations
JJ

"AB" a écrit dans le message de
news:
Bonjour Daniel,
Ca marche bien sûr, mais c'est franchement très long (plus long que
d'arrêter la macro à la main).
Tout ça avec un Celeron à 2.8 Gh et 1024 k de RAM : pas un avion, mais
quand

même...
Pas moyen de sélectionner toutes les cellules d'une colonne, de la 1ère à
la

dernière contenant des valeurs ?
Il me semblait qu'on pouvait faire ça à la main (avec F8 + CTRL quelque
chose), mais je ne retrouve plus...
AB

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

Bonjour.
Ajoute, avant next :
If cell.Row = 65536 Then Exit Sub
"AB" a écrit dans le message de news:

Bonjour à tous,

La macro ci-après met en majuscules la sélection.
Sub Majuscules()
For Each cell In Selection
cell.Value = UCase(cell.Formula)
Next
End Sub
Mais lorsque je sélectionne une colonne, elle boucle dans fin, et je
doit



faire ESC pour l'arrêter.
Comment la modifier pour que, même si c'est toute une colonne qui est
sélectionnée, la macro s'arrête toute seule quand il n'y a plus de
valeurs ?
AB













Avatar
AB
Merci Pounet95, mais ça ne me convient pas : je peux avoir des données en
colonne adjacente (B), que je ne veux pas effacer.
AB

"Pounet95" a écrit dans le message de news:
%
On dirait qu'il manque quelque chose ;o((((
Mille excuses en plus pour les fautes de frappe.

Donc le voilà , à recopier dans un module standard

Option Explicit

Sub Tout_Majuscule()
Dim lig As Long
'dernière cellule remplie en colonne A
lig = 65536
If [A65536] = "" Then lig = Range("A65536").End(xlUp).Row
Range("B1:B" & lig).Select
Selection.FormulaR1C1 = "=UPPER(RC[-1])"
Selection.Copy
Range("A1").Select
Selection.PasteSpecial xlValues
Columns(2).Clear
End Sub


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

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

Bonjour, essaie ceci ern adaptant au besoin
Les données à mettre en majuscule sont en colonne A
Elles sont transformées en colonne B sous forme de majuscule
Ensuite la colonne B est recopuée en colonne A et effacée

temps mis : 1 grosse seconde
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

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

Bonjour Daniel,
Ca marche bien sûr, mais c'est franchement très long (plus long que
d'arrêter la macro à la main).
Tout ça avec un Celeron à 2.8 Gh et 1024 k de RAM : pas un avion, mais
quand même...
Pas moyen de sélectionner toutes les cellules d'une colonne, de la 1ère
à la dernière contenant des valeurs ?
Il me semblait qu'on pouvait faire ça à la main (avec F8 + CTRL quelque
chose), mais je ne retrouve plus...
AB

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

Bonjour.
Ajoute, avant next :
If cell.Row = 65536 Then Exit Sub
"AB" a écrit dans le message de news:

Bonjour à tous,

La macro ci-après met en majuscules la sélection.
Sub Majuscules()
For Each cell In Selection
cell.Value = UCase(cell.Formula)
Next
End Sub
Mais lorsque je sélectionne une colonne, elle boucle dans fin, et je
doit faire ESC pour l'arrêter.
Comment la modifier pour que, même si c'est toute une colonne qui est
sélectionnée, la macro s'arrête toute seule quand il n'y a plus de
valeurs ?
AB



















Avatar
AB
Salut Jacky,
Ta soluce marche très bien (et est ultra rapide), mais ce n'est pas ce que
je cherche. En fait, je m'aperçois que je me suis mal exprimé, et je te prie
de m'en excuser.
Je cherche ça :
Si je sélectionne une ou plusieurs cellules, je veux que seules ces cellules
soient mises en majuscules
Si je sélectionne une colonne, je veux que toutes les cellules de la colonne
soient mises en majuscules.
Possible, ou faut-il envisager 2 macros différentes ?
AB

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

Bonjour,

Ceci met en majuscule toute la colonne de la cellule sélectionnée.
'---------
Sub jj()
x = Chr(Selection.Columns.Column + 64)
derlg = Range(x & "65536").End(3).Row
For Each c In Range(Cells(1, x), Cells(derlg, x))
c.Value = UCase(c.Value)
Next
End Sub
'-----------
Ps: éviter d'utiliser l'instruction "cell" comme une variable, cela peut
provoquer un plantage d'Excel.
Salutations
JJ

"AB" a écrit dans le message de
news:
Bonjour Daniel,
Ca marche bien sûr, mais c'est franchement très long (plus long que
d'arrêter la macro à la main).
Tout ça avec un Celeron à 2.8 Gh et 1024 k de RAM : pas un avion, mais
quand

même...
Pas moyen de sélectionner toutes les cellules d'une colonne, de la 1ère à
la

dernière contenant des valeurs ?
Il me semblait qu'on pouvait faire ça à la main (avec F8 + CTRL quelque
chose), mais je ne retrouve plus...
AB

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

Bonjour.
Ajoute, avant next :
If cell.Row = 65536 Then Exit Sub
"AB" a écrit dans le message de news:

Bonjour à tous,

La macro ci-après met en majuscules la sélection.
Sub Majuscules()
For Each cell In Selection
cell.Value = UCase(cell.Formula)
Next
End Sub
Mais lorsque je sélectionne une colonne, elle boucle dans fin, et je
doit



faire ESC pour l'arrêter.
Comment la modifier pour que, même si c'est toute une colonne qui est
sélectionnée, la macro s'arrête toute seule quand il n'y a plus de
valeurs ?
AB

















Avatar
michdenis
Bonjour Ab,

Essaie ceci :

'--------------------------
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
'--------------------------


Salutations!



"AB" a écrit dans le message de news:
Salut Jacky,
Ta soluce marche très bien (et est ultra rapide), mais ce n'est pas ce que
je cherche. En fait, je m'aperçois que je me suis mal exprimé, et je te prie
de m'en excuser.
Je cherche ça :
Si je sélectionne une ou plusieurs cellules, je veux que seules ces cellules
soient mises en majuscules
Si je sélectionne une colonne, je veux que toutes les cellules de la colonne
soient mises en majuscules.
Possible, ou faut-il envisager 2 macros différentes ?
AB

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

Bonjour,

Ceci met en majuscule toute la colonne de la cellule sélectionnée.
'---------
Sub jj()
x = Chr(Selection.Columns.Column + 64)
derlg = Range(x & "65536").End(3).Row
For Each c In Range(Cells(1, x), Cells(derlg, x))
c.Value = UCase(c.Value)
Next
End Sub
'-----------
Ps: éviter d'utiliser l'instruction "cell" comme une variable, cela peut
provoquer un plantage d'Excel.
Salutations
JJ

"AB" a écrit dans le message de
news:
Bonjour Daniel,
Ca marche bien sûr, mais c'est franchement très long (plus long que
d'arrêter la macro à la main).
Tout ça avec un Celeron à 2.8 Gh et 1024 k de RAM : pas un avion, mais
quand

même...
Pas moyen de sélectionner toutes les cellules d'une colonne, de la 1ère à
la

dernière contenant des valeurs ?
Il me semblait qu'on pouvait faire ça à la main (avec F8 + CTRL quelque
chose), mais je ne retrouve plus...
AB

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

Bonjour.
Ajoute, avant next :
If cell.Row = 65536 Then Exit Sub
"AB" a écrit dans le message de news:

Bonjour à tous,

La macro ci-après met en majuscules la sélection.
Sub Majuscules()
For Each cell In Selection
cell.Value = UCase(cell.Formula)
Next
End Sub
Mais lorsque je sélectionne une colonne, elle boucle dans fin, et je
doit



faire ESC pour l'arrêter.
Comment la modifier pour que, même si c'est toute une colonne qui est
sélectionnée, la macro s'arrête toute seule quand il n'y a plus de
valeurs ?
AB

















Avatar
Pounet95
Bonsoir,
C'était un exemple A ADAPTER aux besoins.
A la lecture des autres posts, je vois qu'en fait tu t'es mal exprimé (
cachotier, va !! )
A part la boucle sur la sélection, je ne vois pas autre chose .... ou alors,
si les cellules qui doivent
avoir leur contenu en majuscule sont connues, il est possible de forcer la
transformation dès la fin de la saisie
si saisie il y a bien sûr !

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"AB" a écrit dans le message de news:
%23CG7t$
Merci Pounet95, mais ça ne me convient pas : je peux avoir des données en
colonne adjacente (B), que je ne veux pas effacer.
AB

"Pounet95" a écrit dans le message de news:
%
On dirait qu'il manque quelque chose ;o((((
Mille excuses en plus pour les fautes de frappe.

Donc le voilà , à recopier dans un module standard

Option Explicit

Sub Tout_Majuscule()
Dim lig As Long
'dernière cellule remplie en colonne A
lig = 65536
If [A65536] = "" Then lig = Range("A65536").End(xlUp).Row
Range("B1:B" & lig).Select
Selection.FormulaR1C1 = "=UPPER(RC[-1])"
Selection.Copy
Range("A1").Select
Selection.PasteSpecial xlValues
Columns(2).Clear
End Sub


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

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

Bonjour, essaie ceci ern adaptant au besoin
Les données à mettre en majuscule sont en colonne A
Elles sont transformées en colonne B sous forme de majuscule
Ensuite la colonne B est recopuée en colonne A et effacée

temps mis : 1 grosse seconde
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

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

Bonjour Daniel,
Ca marche bien sûr, mais c'est franchement très long (plus long que
d'arrêter la macro à la main).
Tout ça avec un Celeron à 2.8 Gh et 1024 k de RAM : pas un avion, mais
quand même...
Pas moyen de sélectionner toutes les cellules d'une colonne, de la 1ère
à la dernière contenant des valeurs ?
Il me semblait qu'on pouvait faire ça à la main (avec F8 + CTRL quelque
chose), mais je ne retrouve plus...
AB

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

Bonjour.
Ajoute, avant next :
If cell.Row = 65536 Then Exit Sub
"AB" a écrit dans le message de news:

Bonjour à tous,

La macro ci-après met en majuscules la sélection.
Sub Majuscules()
For Each cell In Selection
cell.Value = UCase(cell.Formula)
Next
End Sub
Mais lorsque je sélectionne une colonne, elle boucle dans fin, et je
doit faire ESC pour l'arrêter.
Comment la modifier pour que, même si c'est toute une colonne qui est
sélectionnée, la macro s'arrête toute seule quand il n'y a plus de
valeurs ?
AB























Avatar
AB
Merci "michdenis"

Ca marche parfaitement, et c'est exactement ce que je voulais.
Mille excuses et grand merci également aux autres contributeurs, que j'ai
fait réfléchir sur un problème mal posé.
Passez un bon dimanche (le samedi est assez avancé...)
AB

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

Bonjour Ab,

Essaie ceci :

'--------------------------
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
'--------------------------


Salutations!



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

Salut Jacky,
Ta soluce marche très bien (et est ultra rapide), mais ce n'est pas ce que
je cherche. En fait, je m'aperçois que je me suis mal exprimé, et je te
prie
de m'en excuser.
Je cherche ça :
Si je sélectionne une ou plusieurs cellules, je veux que seules ces
cellules
soient mises en majuscules
Si je sélectionne une colonne, je veux que toutes les cellules de la
colonne
soient mises en majuscules.
Possible, ou faut-il envisager 2 macros différentes ?
AB

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

Bonjour,

Ceci met en majuscule toute la colonne de la cellule sélectionnée.
'---------
Sub jj()
x = Chr(Selection.Columns.Column + 64)
derlg = Range(x & "65536").End(3).Row
For Each c In Range(Cells(1, x), Cells(derlg, x))
c.Value = UCase(c.Value)
Next
End Sub
'-----------
Ps: éviter d'utiliser l'instruction "cell" comme une variable, cela peut
provoquer un plantage d'Excel.
Salutations
JJ

"AB" a écrit dans le message de
news:
Bonjour Daniel,
Ca marche bien sûr, mais c'est franchement très long (plus long que
d'arrêter la macro à la main).
Tout ça avec un Celeron à 2.8 Gh et 1024 k de RAM : pas un avion, mais
quand

même...
Pas moyen de sélectionner toutes les cellules d'une colonne, de la 1ère
à
la

dernière contenant des valeurs ?
Il me semblait qu'on pouvait faire ça à la main (avec F8 + CTRL quelque
chose), mais je ne retrouve plus...
AB

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

Bonjour.
Ajoute, avant next :
If cell.Row = 65536 Then Exit Sub
"AB" a écrit dans le message de news:

Bonjour à tous,

La macro ci-après met en majuscules la sélection.
Sub Majuscules()
For Each cell In Selection
cell.Value = UCase(cell.Formula)
Next
End Sub
Mais lorsque je sélectionne une colonne, elle boucle dans fin, et je
doit



faire ESC pour l'arrêter.
Comment la modifier pour que, même si c'est toute une colonne qui est
sélectionnée, la macro s'arrête toute seule quand il n'y a plus de
valeurs ?
AB