Simplification du code VBA

Y compris Power BI, Power Query et toute autre question en lien avec Excel
L
Looper
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 22 janvier 2020
Version d'Excel : 2013 FR

Message par Looper » 22 janvier 2020, 17:57

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.
Classeur1.xlsm
(22.49 Kio) Téléchargé 6 fois
Avatar du membre
LouReeD
Contributeur
Contributeur
Messages : 6'661
Appréciations reçues : 321
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Contact :
Téléchargements : Mes applications

Message par LouReeD » 22 janvier 2020, 19:01

Bonsoir,

un essai :
Copie de Classeur1.xlsm
(21.97 Kio) Téléchargé 3 fois
@ bientôt

LouReeD
Quelques règles à lire ICI ;;)
______________________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
L
Looper
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 22 janvier 2020
Version d'Excel : 2013 FR

Message par Looper » 22 janvier 2020, 20:21

J'ai trouvé la solution sur un autre forum.

Je la post ici, ca peut toujours servi a quelqu'un d'autre ;-)

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

A placer dans ThisWorkbook. Fonctionne sur toutes les feuilles du classeur.
Avatar du membre
LouReeD
Contributeur
Contributeur
Messages : 6'661
Appréciations reçues : 321
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Contact :
Téléchargements : Mes applications

Message par LouReeD » 22 janvier 2020, 21:04

Evidemment, je me suis un peu compliquer la vie, puisque la feuille est protégée et que seule les cellules déverrouillées peuvent être modifiées ! :P
Suis-je bête !

@ bientôt

LouReeD
Quelques règles à lire ICI ;;)
______________________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
L
Looper
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 22 janvier 2020
Version d'Excel : 2013 FR

Message par Looper » 22 janvier 2020, 21:34

Par contre, petite question :

Sur les feuilles , j'ai une cellule ou j'ai une fonction NBVAL qui comptabilise les entrées dans les cellules pour me donner le total des cellules remplies, mais depuis que ce code vba tourne, la fonction est systématiquement écrasée et laisse place à un 0.

Une idée ?

Merci d'avance
Avatar du membre
LouReeD
Contributeur
Contributeur
Messages : 6'661
Appréciations reçues : 321
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Contact :
Téléchargements : Mes applications

Message par LouReeD » 22 janvier 2020, 21:37

Vous parlez du code que l'on vous a fourni sur un autre forum ?
Faut que je le teste...

@ bientôt

LouReeD
Quelques règles à lire ICI ;;)
______________________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
Avatar du membre
LouReeD
Contributeur
Contributeur
Messages : 6'661
Appréciations reçues : 321
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Contact :
Téléchargements : Mes applications

Message par LouReeD » 22 janvier 2020, 21:40

Regardez les options de calculs et mettez la à "Automatique".
En effet, lorsqu'une cellule ne réagit pas à une formule que l'on sait "bonne" alors un petit coup de [F9] permet de voir qu'elle se met à jour... Donc les calculs sont en manuel...

Le soucis avec ThisWorkBook, c'est que cela fonctionne sur toutes les feuilles, même celles où l'on ne veut pas, à moins de tester le nom ou la position de la feuille où le "Change" a eu lieu.

@ bientôt

LouReeD
Quelques règles à lire ICI ;;)
______________________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message