• Initiateur de la discussion Initiateur de la discussion fenec
  • 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 !

fenec

XLDnaute Impliqué
Bonjour le forum
Je reviens vers vous car je rencontre un problème avec mon code,en effet pour qu'il s'excécute je dois revenir sur la cellule
Cordialement
Fenec
 

Pièces jointes

Re : Lettres majuscules

bonjour,

Victor21 à raison mais il est très important, avant de modifier la cellule, de désactiver temporairement le déclenchement d’évènements, car le fait de de forcer la cellule en majuscule provoque un évènement Change;;; et ça boucle

Application.EnableEvents=False
Application.EnableEvents = true

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim plage As Range
If Target.Count > 1 Then Exit Sub '<-- pour éviter que ça coince si on sélectionne plusieurs cellules
 
 Set plage = Range("B2:B4")

Application.EnableEvents = False

If Not Application.Intersect(Target, plage) Is Nothing Then
 Target.Value = StrConv(Target.Value, 3)
End If
 
If Not Application.Intersect(Target, Range("B1")) Is Nothing Then
 Target = UCase(Target)
 End If
 
Application.EnableEvents = True

 
End Sub
 
Re : Lettres majuscules

Re,

Pour que cette procédure fonctionne sur toute les pages, collez-la dans le ThisWorkbook
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim plage As Range
    If Target.Count > 1 Then Exit Sub    '<-- pour éviter que ça coince si on sélectionne plusieurs cellules
    Set plage = Range("B2:B4")
    Application.EnableEvents = False
    If Not Application.Intersect(Target, plage) Is Nothing Then
        Target.Value = StrConv(Target.Value, 3)
    End If
    If Not Application.Intersect(Target, Range("B1")) Is Nothing Then
        Target = UCase(Target)
    End If
    Application.EnableEvents = True
End Sub

Dans l'attente de la suite de votre question...
 
Re : Lettres majuscules

Re,
Encore merci mais je ne veux pas l'appliquer à toutes les pages mais seulement à trois vu que j'utilise cette procédure dans une autre feuille mais pas avec la meme plage ou alors,
Est-il possible de définir plusieurs plages?
 
Re : Lettres majuscules

Bonjour le forum
N'hésitez pas à mettre les mains dans le cambouis : c'est comme ça que ça rentre
En plus des mains j'ai la tête,mais ne connaissant pas "sh.Name" pas simple...
Une âme charitable voudrait elle bien m'expliquer cette fonction afin de me rendre la tâche plus simple
Cordialement
Fenec
 
Re : Lettres majuscules

Bonjour le forum

Je suis parvenu à m'appliquer la procédure que sur une seule page en faisant ceci

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Sh.Name = "Feuil1" Then


     Dim plage As Range
     If Target.Count > 1 Then Exit Sub    '<-- pour éviter que ça coince si on sélectionne plusieurs cellules
    Set plage = Range("B2:B4")
     Application.EnableEvents = False
     If Not Application.Intersect(Target, plage) Is Nothing Then
         Target.Value = StrConv(Target.Value, 3)
     End If
     If Not Application.Intersect(Target, Range("B1")) Is Nothing Then
         Target = UCase(Target)
     End If
     Application.EnableEvents = True
     End If
    
 End Sub

Mais je ne parviens pas à rajouter une autre feuille si je renseigne ainsi:

Code:
If Sh.Name = "Feuil1","Feuil3" Then

je rencontre une erreur de compilation !!!

Cordialement

Fenec
 
Re : Lettres majuscules

bonjour à tous

A tester:

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     Dim plage As Range
     If Target.Count > 1 Then Exit Sub    '<-- pour éviter que ça coince si on sélectionne plusieurs cellules
     lesfeuiles = ";Feuil1;Feuil2;Feuil3;"
     If InStr(lesfeuiles, ";" & Sh.Name & ";") <> 0 Then
       Set plage = Range("B2:B4")
       Application.EnableEvents = False
       If Not Application.Intersect(Target, plage) Is Nothing Then
         Target.Value = StrConv(Target.Value, 3)
       End If
       If Not Application.Intersect(Target, Range("B1")) Is Nothing Then
         Target = UCase(Target)
       End If
       Application.EnableEvents = True
      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
13
Affichages
535
Réponses
33
Affichages
2 K
Réponses
2
Affichages
185
  • Question Question
Microsoft 365 Bloccage Excel
Réponses
1
Affichages
399
W
Réponses
4
Affichages
215
Réponses
13
Affichages
593
Retour