XL 2013 Simplification code VBA

Looper

XLDnaute Nouveau
Bonjour,

Je débute en VBA et j'aimerais savoir si il y a moyen de simplifier mon code VBA inclus dans la feuille 1 de mon classeur.

Explications :

J'ai écris ce code pour que dans les cellules déverrouillées de ma feuille, si on écrit en minuscule, ce soit automatiquement transcrit en majuscule. Ca fonctionne .... mais je me demande si il n'y a quand même pas moyen de simplifier ce code ! (vous verrez par vous même).

De plus, mon classeur va comporter 56 feuilles identiques (pour la mise en forme). Je me vois mal appliquer ce code aux 56 pages ! Là aussi , pouvez-vous m'aider à mettre ce code au bon endroit pour qu'il soit appliqué à toutes les feuilles de mon classeur.

Notez que les feuilles sont verrouillées par mdp (mdp : test). Pour le code, ca ne pose pas de problème vu que les cellules dans lesquelles je dois écrire sont bien déverrouillées.

J'espère avoir été assez clair.
 

Pièces jointes

  • Classeur1.xlsm
    22.5 KB · Affichages: 8
Solution
Bonjour à tous,
Perso. je ferais comme ceci
A placer dans le ThisWorkbook
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False
    Target = UCase(Target)
    Application.EnableEvents = True
End Sub
Un tout grand merci pour l'aide, ça fonctionne impeccablement pour l'usage que je dois en faire !

Looper

XLDnaute Nouveau
Bonjour,

Dans le module ThisWorkbook, mets :

VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  Dim C As Range
  For Each C In Target
    If C.Locked = False Then C.Value = UCase(C.Value)
  Next C
End Sub

Daniel
Perfect ! Un tout grand merci Daniel ! Par contre si je vide la cellule et que je la laisse vide, j'ai un message d'erreur (voir le fichier joint)

Merci d'avance :)
 

Pièces jointes

  • vba_error.JPG
    vba_error.JPG
    17.8 KB · Affichages: 4
Dernière édition:

Jacky67

XLDnaute Barbatruc
Bonjour,

Je débute en VBA et j'aimerais savoir si il y a moyen de simplifier mon code VBA inclus dans la feuille 1 de mon classeur.

Explications :

J'ai écris ce code pour que dans les cellules déverrouillées de ma feuille, si on écrit en minuscule, ce soit automatiquement transcrit en majuscule. Ca fonctionne .... mais je me demande si il n'y a quand même pas moyen de simplifier ce code ! (vous verrez par vous même).

De plus, mon classeur va comporter 56 feuilles identiques (pour la mise en forme). Je me vois mal appliquer ce code aux 56 pages ! Là aussi , pouvez-vous m'aider à mettre ce code au bon endroit pour qu'il soit appliqué à toutes les feuilles de mon classeur.

Notez que les feuilles sont verrouillées par mdp (mdp : test). Pour le code, ca ne pose pas de problème vu que les cellules dans lesquelles je dois écrire sont bien déverrouillées.

J'espère avoir été assez clair.
Bonjour à tous,
Perso. je ferais comme ceci
A placer dans le ThisWorkbook
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False
    Target = UCase(Target)
    Application.EnableEvents = True
End Sub
 

Pièces jointes

  • looper.xlsm
    20.8 KB · Affichages: 5

Looper

XLDnaute Nouveau
Bonjour à tous,
Perso. je ferais comme ceci
A placer dans le ThisWorkbook
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False
    Target = UCase(Target)
    Application.EnableEvents = True
End Sub
Un tout grand merci pour l'aide, ça fonctionne impeccablement pour l'usage que je dois en faire !
 

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof