Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour Riri,
Essaie ceci :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range Application.EnableEvents = False
If Target.Column = 2 Then Set Rg = Intersect(Target, Columns(2)) If Not Rg Is Nothing Then For Each c In Rg If Right(c, 1) <> "=" And Right(c, 1) <> "+" Then If c.Value <> "" Then c.Value = UCase(c) End If End If Next End If End If
If Target.Column = 7 Then Set Rg = Intersect(Target, Columns(7)) If Not Rg Is Nothing Then For Each c In Rg If Right(c, 1) <> "=" And Right(c, 1) <> "+" Then If c <> "" Then c.Value = UCase(c) End If End If Next End If End If Application.EnableEvents = True End Sub
Salutations!
Salutations!
"RIRI" a écrit dans le message de news:BB2CADC9.6627% Bonjour,
J'ai la macro suivante :
Private sub Worksheet_Change (ByVal Target As range)
Application.EnableEvents = False
If Target.Column = 2 Then Target = Ucase (Target) End If If Target.Column = 7 Then Target = Ucase (Target) End If
Application.EnableEvents = True End Sub
Quand je fait une recopie de cellule je créer un bog dans ma macro. Que puis-je faire pour éviter cela???
Mille Merci
Bonjour Riri,
Essaie ceci :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range
Application.EnableEvents = False
If Target.Column = 2 Then
Set Rg = Intersect(Target, Columns(2))
If Not Rg Is Nothing Then
For Each c In Rg
If Right(c, 1) <> "=" And Right(c, 1) <> "+" Then
If c.Value <> "" Then
c.Value = UCase(c)
End If
End If
Next
End If
End If
If Target.Column = 7 Then
Set Rg = Intersect(Target, Columns(7))
If Not Rg Is Nothing Then
For Each c In Rg
If Right(c, 1) <> "=" And Right(c, 1) <> "+" Then
If c <> "" Then
c.Value = UCase(c)
End If
End If
Next
End If
End If
Application.EnableEvents = True
End Sub
Salutations!
Salutations!
"RIRI" <Sriri@wanadoo.fr> a écrit dans le message de news:BB2CADC9.6627%Sriri@wanadoo.fr...
Bonjour,
J'ai la macro suivante :
Private sub Worksheet_Change (ByVal Target As range)
Application.EnableEvents = False
If Target.Column = 2 Then
Target = Ucase (Target)
End If
If Target.Column = 7 Then
Target = Ucase (Target)
End If
Application.EnableEvents = True
End Sub
Quand je fait une recopie de cellule je créer un bog dans ma macro. Que
puis-je faire pour éviter cela???
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range Application.EnableEvents = False
If Target.Column = 2 Then Set Rg = Intersect(Target, Columns(2)) If Not Rg Is Nothing Then For Each c In Rg If Right(c, 1) <> "=" And Right(c, 1) <> "+" Then If c.Value <> "" Then c.Value = UCase(c) End If End If Next End If End If
If Target.Column = 7 Then Set Rg = Intersect(Target, Columns(7)) If Not Rg Is Nothing Then For Each c In Rg If Right(c, 1) <> "=" And Right(c, 1) <> "+" Then If c <> "" Then c.Value = UCase(c) End If End If Next End If End If Application.EnableEvents = True End Sub
Salutations!
Salutations!
"RIRI" a écrit dans le message de news:BB2CADC9.6627% Bonjour,
J'ai la macro suivante :
Private sub Worksheet_Change (ByVal Target As range)
Application.EnableEvents = False
If Target.Column = 2 Then Target = Ucase (Target) End If If Target.Column = 7 Then Target = Ucase (Target) End If
Application.EnableEvents = True End Sub
Quand je fait une recopie de cellule je créer un bog dans ma macro. Que puis-je faire pour éviter cela???
Mille Merci
RIRI
Merci beaucoup, en voyant ta macro je comprends pourquoi la mienne était nulle
Merci beaucoup, en voyant ta macro je comprends pourquoi la mienne était
nulle
Merci beaucoup, en voyant ta macro je comprends pourquoi la mienne était nulle
michdenis
Bonjour Riri,
Voici la procédure corrigée d'une inexactitude !
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range Application.EnableEvents = False
If Target.Column = 2 Then Set Rg = Intersect(Target, Columns(2)) If Not Rg Is Nothing Then For Each c In Rg If Not IsError(c) Then If Left(c.Formula, 1) <> "=" _ And Left(c.Formula, 1) <> "+" Then c.Value = UCase(c) End If End If Next End If End If
If Target.Column = 7 Then Set Rg = Intersect(Target, Columns(7)) If Not Rg Is Nothing Then For Each c In Rg If Not IsError(c) Then If Left(c.Formula, 1) <> "=" _ And Left(c.Formula, 1) <> "+" Then c.Value = UCase(c) End If End If Next End If End If Application.EnableEvents = True End Sub
Salutations!
Bonjour Riri,
Voici la procédure corrigée d'une inexactitude !
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range
Application.EnableEvents = False
If Target.Column = 2 Then
Set Rg = Intersect(Target, Columns(2))
If Not Rg Is Nothing Then
For Each c In Rg
If Not IsError(c) Then
If Left(c.Formula, 1) <> "=" _
And Left(c.Formula, 1) <> "+" Then
c.Value = UCase(c)
End If
End If
Next
End If
End If
If Target.Column = 7 Then
Set Rg = Intersect(Target, Columns(7))
If Not Rg Is Nothing Then
For Each c In Rg
If Not IsError(c) Then
If Left(c.Formula, 1) <> "=" _
And Left(c.Formula, 1) <> "+" Then
c.Value = UCase(c)
End If
End If
Next
End If
End If
Application.EnableEvents = True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range Application.EnableEvents = False
If Target.Column = 2 Then Set Rg = Intersect(Target, Columns(2)) If Not Rg Is Nothing Then For Each c In Rg If Not IsError(c) Then If Left(c.Formula, 1) <> "=" _ And Left(c.Formula, 1) <> "+" Then c.Value = UCase(c) End If End If Next End If End If
If Target.Column = 7 Then Set Rg = Intersect(Target, Columns(7)) If Not Rg Is Nothing Then For Each c In Rg If Not IsError(c) Then If Left(c.Formula, 1) <> "=" _ And Left(c.Formula, 1) <> "+" Then c.Value = UCase(c) End If End If Next End If End If Application.EnableEvents = True End Sub
Salutations!
michdenis
Bonjour Riri,
Prend soin de copier la nouvelle procédure pour éviter les surprises !!!
Salutations!
"RIRI" a écrit dans le message de news:BB2CB4BC.66EE% Merci beaucoup, en voyant ta macro je comprends pourquoi la mienne était nulle
Bonjour Riri,
Prend soin de copier la nouvelle procédure pour éviter les surprises !!!
Salutations!
"RIRI" <Sriri@wanadoo.fr> a écrit dans le message de news:BB2CB4BC.66EE%Sriri@wanadoo.fr...
Merci beaucoup, en voyant ta macro je comprends pourquoi la mienne était
nulle
Serait-ce de l'abus si je te demande de m'expliquer ta procédure?
michdenis
Bonjour AV,
Au volant, non ! Mais comme co-pilote ! C'est l'enfer ! Pour le pilote !
;-)))
Je suis un faux droitier que l'on a obligé à écrire de la droite ! mais gaucher dans les activité sportives ! Donc un peu mélangé !!!
Salutations!
"AV" a écrit dans le message de news:% Hé Denis, tu dois être sacrément dangereux quand tu circules ! Droite ou gauche ? ;-) J'annule presto mon séjour au Canada ! AV
Bonjour AV,
Au volant, non ! Mais comme co-pilote ! C'est l'enfer ! Pour le pilote !
;-)))
Je suis un faux droitier que l'on a obligé à écrire de la droite !
mais gaucher dans les activité sportives ! Donc un peu mélangé !!!
Salutations!
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message de news:%232VDmhwQDHA.1684@TK2MSFTNGP12.phx.gbl...
Hé Denis, tu dois être sacrément dangereux quand tu circules !
Droite ou gauche ?
;-)
J'annule presto mon séjour au Canada !
AV
Au volant, non ! Mais comme co-pilote ! C'est l'enfer ! Pour le pilote !
;-)))
Je suis un faux droitier que l'on a obligé à écrire de la droite ! mais gaucher dans les activité sportives ! Donc un peu mélangé !!!
Salutations!
"AV" a écrit dans le message de news:% Hé Denis, tu dois être sacrément dangereux quand tu circules ! Droite ou gauche ? ;-) J'annule presto mon séjour au Canada ! AV
michdenis
Bonjour Riri,
Tu as bien raison, la procédure était longue inutilement !!!
Voici une version écourtée et plus complète :
'-------------------------------------- Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range Application.EnableEvents = False Set Rg = Intersect(Target, Union(Columns(2), Columns(7))) If Not Rg Is Nothing Then For Each c In Rg If Not IsError(c) Then If Left(c.Formula, 1) <> "=" _ And Left(c.Formula, 1) <> "+" Then c.Value = UCase(c) End If End If Next End If Application.EnableEvents = True Set Rg = Nothing End Sub '--------------------------------------
Même procédure avec note explicative :
Il faut savoir que le "Target" de la procédure représente la cellule active ou l'ensemble des cellules sélectionnées par un usager.
'------------------------------------------------- Private Sub Worksheet_Change(ByVal Target As Range)
'Déclaration d'un objet "Range" Dim Rg As Range
'Cette ligne désactive les procédures événementielles Application.EnableEvents = False
'Détermine la plage de cellules qui est touché par 'la procédure. En fait, c'est l'intersection entre 'une plage sélectionnée sur la feuille avec les 'colonnes 2 et 7. Toutes les cellules qui sont communes 'à la sélection (ou une cellule) fait par l'usager et 'à la colonne 2 ou 7 , se retrouvent dans la variable 'Range "Rg" Set Rg = Intersect(Target, Union(Columns(2), Columns(7)))
'Si il y a au moins une cellule dans la variable Rg If Not Rg Is Nothing Then 'Pour toutes les cellules contenues dans Rg For Each c In Rg 'Si tu écris dans une cellule de Rg une 'formule, et que le nom de la fonction 'est erronée ...cela évite un plantage 'La cellule affiche #NOM? , on ne peut pas 'donc la mettre en majuscule !!! If Not IsError(c) Then 'Si tu as écris une formule dans une des cellules 'de Rg, Tu ne veux pas modifier ce que la fonction 'ou formule doit renvoyer ! Une formule peut aussi 'renvoyé du texte. If Left(c.Formula, 1) <> "=" _ And Left(c.Formula, 1) <> "+" Then 'La mise en majuscule simplement du contenu 'de la cellule. c.Value = UCase(c) End If End If Next End If 'Réactive les procédures événementielles Application.EnableEvents = True
End Sub '-------------------------------------------------
Salutations!
"RIRI" a écrit dans le message de news:BB2CBA39.687F% Merci beaucoup, je prends note de la modif.
Serait-ce de l'abus si je te demande de m'expliquer ta procédure?
Bonjour Riri,
Tu as bien raison, la procédure était longue inutilement !!!
Voici une version écourtée et plus complète :
'--------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range
Application.EnableEvents = False
Set Rg = Intersect(Target, Union(Columns(2), Columns(7)))
If Not Rg Is Nothing Then
For Each c In Rg
If Not IsError(c) Then
If Left(c.Formula, 1) <> "=" _
And Left(c.Formula, 1) <> "+" Then
c.Value = UCase(c)
End If
End If
Next
End If
Application.EnableEvents = True
Set Rg = Nothing
End Sub
'--------------------------------------
Même procédure avec note explicative :
Il faut savoir que le "Target" de la procédure représente
la cellule active ou l'ensemble des cellules sélectionnées
par un usager.
'-------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'Déclaration d'un objet "Range"
Dim Rg As Range
'Cette ligne désactive les procédures événementielles
Application.EnableEvents = False
'Détermine la plage de cellules qui est touché par
'la procédure. En fait, c'est l'intersection entre
'une plage sélectionnée sur la feuille avec les
'colonnes 2 et 7. Toutes les cellules qui sont communes
'à la sélection (ou une cellule) fait par l'usager et
'à la colonne 2 ou 7 , se retrouvent dans la variable
'Range "Rg"
Set Rg = Intersect(Target, Union(Columns(2), Columns(7)))
'Si il y a au moins une cellule dans la variable Rg
If Not Rg Is Nothing Then
'Pour toutes les cellules contenues dans Rg
For Each c In Rg
'Si tu écris dans une cellule de Rg une
'formule, et que le nom de la fonction
'est erronée ...cela évite un plantage
'La cellule affiche #NOM? , on ne peut pas
'donc la mettre en majuscule !!!
If Not IsError(c) Then
'Si tu as écris une formule dans une des cellules
'de Rg, Tu ne veux pas modifier ce que la fonction
'ou formule doit renvoyer ! Une formule peut aussi
'renvoyé du texte.
If Left(c.Formula, 1) <> "=" _
And Left(c.Formula, 1) <> "+" Then
'La mise en majuscule simplement du contenu
'de la cellule.
c.Value = UCase(c)
End If
End If
Next
End If
'Réactive les procédures événementielles
Application.EnableEvents = True
End Sub
'-------------------------------------------------
Salutations!
"RIRI" <Sriri@wanadoo.fr> a écrit dans le message de news:BB2CBA39.687F%Sriri@wanadoo.fr...
Merci beaucoup, je prends note de la modif.
Serait-ce de l'abus si je te demande de m'expliquer ta procédure?
Tu as bien raison, la procédure était longue inutilement !!!
Voici une version écourtée et plus complète :
'-------------------------------------- Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range Application.EnableEvents = False Set Rg = Intersect(Target, Union(Columns(2), Columns(7))) If Not Rg Is Nothing Then For Each c In Rg If Not IsError(c) Then If Left(c.Formula, 1) <> "=" _ And Left(c.Formula, 1) <> "+" Then c.Value = UCase(c) End If End If Next End If Application.EnableEvents = True Set Rg = Nothing End Sub '--------------------------------------
Même procédure avec note explicative :
Il faut savoir que le "Target" de la procédure représente la cellule active ou l'ensemble des cellules sélectionnées par un usager.
'------------------------------------------------- Private Sub Worksheet_Change(ByVal Target As Range)
'Déclaration d'un objet "Range" Dim Rg As Range
'Cette ligne désactive les procédures événementielles Application.EnableEvents = False
'Détermine la plage de cellules qui est touché par 'la procédure. En fait, c'est l'intersection entre 'une plage sélectionnée sur la feuille avec les 'colonnes 2 et 7. Toutes les cellules qui sont communes 'à la sélection (ou une cellule) fait par l'usager et 'à la colonne 2 ou 7 , se retrouvent dans la variable 'Range "Rg" Set Rg = Intersect(Target, Union(Columns(2), Columns(7)))
'Si il y a au moins une cellule dans la variable Rg If Not Rg Is Nothing Then 'Pour toutes les cellules contenues dans Rg For Each c In Rg 'Si tu écris dans une cellule de Rg une 'formule, et que le nom de la fonction 'est erronée ...cela évite un plantage 'La cellule affiche #NOM? , on ne peut pas 'donc la mettre en majuscule !!! If Not IsError(c) Then 'Si tu as écris une formule dans une des cellules 'de Rg, Tu ne veux pas modifier ce que la fonction 'ou formule doit renvoyer ! Une formule peut aussi 'renvoyé du texte. If Left(c.Formula, 1) <> "=" _ And Left(c.Formula, 1) <> "+" Then 'La mise en majuscule simplement du contenu 'de la cellule. c.Value = UCase(c) End If End If Next End If 'Réactive les procédures événementielles Application.EnableEvents = True
End Sub '-------------------------------------------------
Salutations!
"RIRI" a écrit dans le message de news:BB2CBA39.687F% Merci beaucoup, je prends note de la modif.
Serait-ce de l'abus si je te demande de m'expliquer ta procédure?