XL 2013 VBA MAJUSCULES et minuscules

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

Il y a presque longtemps que je n'ai pas eu à vous solliciter.
En effet, car grâce à vos conseils et formation, j'arrive à solutionner mes petits soucis.
Il y a également tous les sujets anciens et nouveaux qui me permettent également de trouver mes solutions.

Je reviens vers vous car, je n'ai pas réussi à résoudre mon souci ci-dessous :

Dans un feuille, j'aimerais forcer la saisie de certaines cellules en MAJUSCULE et d'autres plages en minuscules.

Malgré mes essais et recherches, je n'ai pas trouvé.

Je pense que le fichier joint contient les codes qui permettent de réaliser mon souhait mais je n'ai pas su les adapter ou les mettre comme il faut.

Pourriez-vous m'aider ?
Avec mes remerciements,
Je vous souhaite à toutes et à tous un super WE,
Amicalement,
Lionel,
 

Pièces jointes

  • Min_Maj 1.xlsm
    16.2 KB · Affichages: 42

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re, bonsoir Si...

Et c'est là qu'arthour973 n'ajoutera pas dans le titre de sa discussion : Résolu par Si...
(comme il le fit en avril 2017)
Plus question de modifier les titres LOL

Mais Si... par deux fois, la voie lui dévoiler en lettres majuscules, je persiste à dire que le gars arthour avait les facultés de résolution de sa problématique.;)
Et quand bientot arrivé à 2000 posts sur le forum, mon gars arthour, tu pourras plus prétendre ne pas savoir utiliser VBA car Barbatruc devenu tu seras. ;)
Nom de d'là, moi Barbatruc ????? va falloir que j'aille chez le spy
 

Staple1600

XLDnaute Barbatruc
Re,

Bon alors mapomme et Si..., ma dernière proposition est-elle dans les clous?

-Suis-je orthodoxe ou hétérodoxe au niveau de ma syntaxe "macrotique"?

-Que devons-nous ajouter comme gestion d'erreur pour être sûr de ne jamais voir mon switch planter?
(Par exemple, sélection de la colonne C, clic-droit, Supprimer et boum badaboum big badaboum*)
*: lilou's tribute

-Pourquoi le ciel est bleu?
(ah non, pardon, ça c'est la question de ma nièce de 5 ans)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Renforçons la sécurité pour être en phase avec l'air du temps (malheureusement)
VB:
Private Sub Worksheet_Change(ByVal T As Range)
If Intersect(T, Range([B1:B60], [C1:C60])) Is Nothing Then Exit Sub
If Not TypeName(T) = "Range" Then Exit Sub 'pas sûr que ce soit nécessaire
If T.Count > 1 Then Exit Sub
Application.EnableEvents = False
T = StrConv(T, Switch(T.Column = 2, 1, T.Column = 3, 2))
Application.EnableEvents = True
End Sub

mapomme et Si... vous voyez d'autres filets de sécurité à ajouter ?
Ah, j'oubliais, je passe du duo au trio ;)
mapomme, Si... et Modeste geedee vous voyez d'autres filets de sécurité à ajouter ?

EDITION: Si on copie/colle vers la colonne B ou C, on est mal.
Mais si je m'en tiens strictement à la demande: " forcer la saisie", j'estime que saisir c'est uniquement au clavier et sans faire de copier/coller na! ;)
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re

Toujours en quête de reconnaissance Staple o_O ?

Saisir m'implique pas forcément de mettre la main à la pâte. Saisis-tu bien cette nuance ?
Rassure-toi, ce n'est pas une saisie de tes biens et je suis d'accord avec le fait qu'il est intéressant de voir des pistes différentes.

Pour ceux qui sont dérangés par ma macro, une version avec une variable déclarée
VB:
Private Sub Worksheet_Change(ByVal Target  As Range)
  Dim C As Range
  Application.ScreenUpdating = 0:  Application.EnableEvents = 0
  For Each C In Range([B1:B60], [C1:C60])
      C = IIf(C.Column = 2, UCase(C), LCase(C))
  Next
  Application.EnableEvents = 1
End Sub

Avec une reprise en main en cas d'erreur par la procédure supplémentaire (que j'intègre presque toujours lors de la mise en place d'une évènementielle*).

VB:
Sub evO(): Application.EnableEvents = 1: End Sub

*mapomme, pour les "Application.EnableEvents" ce n'était qu'un exemple parmi tant d'autres, tout en me rappelant une discussion dans laquelle on avait évoqué les cas du IIf.

Bon WE à tous
 

Staple1600

XLDnaute Barbatruc
Re

Si...
Si je devais avoir une quête à mener, ce serait plus l'interaction/émulation/chambrage entre xldnautes des vieux de la vieille qu'une reconnaissance de ma petite personne ;)

T'aurais pas de petits conseils pour sécuriser ma syntaxe, stp?

NB: A props du IIf, je rappelle avoir lu qu'il y avait quelque inconvénient à son usage, non?
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re JM, Re SI,

Le code de JM :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, rr As Range
'ajout staple
'ici il suffit de changer la plage de cellules si changement
'donc on remplage H9:H25 par tes cellules de la question du jour
On Error Resume Next
Set r = Intersect(Target, [B4:B40], Me.UsedRange) 'plage à adapter
For Each r In r 'si entrées multiples (copier-coller)
  If CStr(r) <> UCase(r) Then r = UCase(r)
Next
Set r = Nothing
Set rr = Intersect(Target, [L4:L40], Me.UsedRange) 'plage à adapter
For Each rr In rr 'si entrées multiples (copier-coller)
  If CStr(rr) <> LCase(rr) Then rr = LCase(rr)
Next
Set rr = Nothing
End Sub
Fonctionne direct immédiat (sans moulinage)

Le code de Si :
Code:
Private Sub Worksheet_Change(ByVal Target  As Range)
  Dim C As Range
  Application.ScreenUpdating = 0:  Application.EnableEvents = 0
  For Each C In Range([B1:B60], [C1:C60])
      C = IIf(C.Column = 2, UCase(C), LCase(C))
  Next
  Application.EnableEvents = 1
End Sub
Mouline avant d'afficher le résultat et dans mon lourd fichier de travail, c'est un souci ;)
Amicalement,
Lionel,
 

Staple1600

XLDnaute Barbatruc
Re,

arthour973
Ce n'est pas mon code mais celui de job75 au départ
(Si j'ai pris ce code, c'était simplement pour appuyer l'idée que tu avais de quoi trouver la solution à ta question, puisque ce code vient de ta discussion d'avril 2017, qu'au passage tu n'avais pas cité dans ce fil si ;) )

Mon code écrit avec mes petits doigts couperosés tu le trouveras dans le message#33
(dans sa dernière version)
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re

Désolé Staple de ne pouvoir répondre à ta dernière re quête car je ne connais pas le Switch (contrairemen t au Swing que je pratiquais dans les années 30, avec ma belle partenaire de l'Epoque).

Athouro, pour éviter de perdre trop de temps, on peut aussi passer par un tableau (VBA) mais c'est une autre histoire que l'ami Staple pourrait te raconter (en connaissant bien, toutefois, le contexte).

Je m'aperçois que tu as le même problème de lenteur dans des messages suivants (dans lesquels je m'abstiendrai de participer).
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re,

arthour973
Ce n'est pas mon code mais celui de job75 au départ
(Si j'ai pris ce code, c'était simplement pour appuyer l'idée que tu avais de quoi trouver la solution à ta question, puisque ce code vient de ta discussion d'avril 2017, qu'au passage tu n'avais pas cité dans ce fil si ;) )

Mon code écrit avec mes petits doigts couperosés tu le trouveras dans le message#33
(dans sa dernière version)

Bonsoir JM,

Dsl de ne pas avoir répondu plus tôt mais je n'avais pas vu ton message.

Effectivement, c'est le code de Job75.
Le tien (post 33) fonctionne aussi et je t'en remercie ;)
Amicalement,
Lionel,
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re

Désolé Staple de ne pouvoir répondre à ta dernière re quête car je ne connais pas le Switch (contrairemen t au Swing que je pratiquais dans les années 30, avec ma belle partenaire de l'Epoque).

Athouro, pour éviter de perdre trop de temps, on peut aussi passer par un tableau (VBA) mais c'est une autre histoire que l'ami Staple pourrait te raconter (en connaissant bien, toutefois, le contexte).

Je m'aperçois que tu as le même problème de lenteur dans des messages suivants (dans lesquels je m'abstiendrai de participer).

Bonsoir Si,
Lol je ne vais pas faire Si .. ro ;)

Merci d'avoir encore répondu.
Mais c'est bon, le souci est solutionné.
Bonne fin de journée,
Amicalement,
Lionel O ;),
 

Discussions similaires

Réponses
10
Affichages
521

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 173
dernier inscrit
Cerba95