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

Staple1600

XLDnaute Barbatruc
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re


@arthour973
Au bout de 1818 posts, et en partant du fil que je cite tu as largement de quoi résoudre cette question du jour, non ?
Ne serait au hasard que cette réponse de job75
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r 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
Set r = Intersect(Target, [H9:H25], Me.UsedRange) 'plage à adapter
If r Is Nothing Then Exit Sub
For Each r In r 'si entrées multiples (copier-coller)
  If CStr(r) <> UCase(r) Then r = UCase(r)
Next
End Sub
Sauf à vouloir du tout cuit dans le bec, ce qui est un choix qui peut se défendre ;)
(mais trés loin de ma philosophie)

Alors camarade arthour973?
Poil dans la main ou défaut de compétence? ;)

EDITION: J'ai ouvert ta PJ et il y a déjà du code VBA utilsant Ucase ert Lcase ?!?
Donc je comprends d'autant moins ta qiuestion du jour
Et tu n'indiques par clairement quelles plages devront être en majuscules ou en minuscules ?
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
On va dire un défaut de compétence pour faire ce code.
Le poil dans la main LOL voilà une question très bizarre :confused:

Il est normal que tu ne le saches pas mais pour mon boulot, une opération répétée des centaines fois par jour et par 6 personnes est une énorme perte de temps.
Le "tout cuit dans le bec" n'est peut-être pas la phrase appropriée car avant toutes mes questions, je passe pas mal de temps selon mes disponibilités à rechercher encore et encore des solutions.
Dans les "1818" fils cités, je ne sais pas si je les ai tous vus mais j'en ai vu un bon paquet sans trouver mon bonheur. Mais il est vrai que 1818 fils, c'est beaucoup sachant qu'en plus, j'ai cherché sur le net dans pal mal de forums et autres possibilités.
Merci de m'avoir répondu même si ta réponse me semble un peu limite et piquante ;)
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
EDITION: J'ai ouvert ta PJ et il y a déjà du code VBA utilsant Ucase ert Lcase ?!?
Donc je comprends d'autant moins ta qiuestion du jour
Et tu n'indiques par clairement quelles plages devront être en majuscules ou en minuscules ?

LOL, j'en ai oublié de répondre à tes questions ;)

Effectivement, j'ai tenté de voir comment je pourrais adapter en cherchant les codes qui me semblaient bon.

Mais je n'ai pas réussi.
Dans l'espoir que ça fonctionnerait; je viens de faire le code suivant que j'ai mis dans le code de la feuille :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("b1:b60")) Is Nothing Then
Dim maj As Range
Set maj = Me.UsedRange 'plage à adapter
If maj Is Nothing Then Exit Sub
For Each maj In maj 'si entrées multiples (copier-coller)
  If CStr(maj) <> UCase(maj) Then maj = UCase(maj)
Next
End If

If Not Intersect(Target, Range("c1:c60")) Is Nothing Then
Dim min As Range
Set min = Me.UsedRange 'plage à adapter
If min Is Nothing Then Exit Sub
For Each min In min 'si entrées multiples (copier-coller)
  If CStr(min) <> LCase(min) Then min = LCase(min)
Next
End If
End Sub
Malheureusement, ça ne marche pas.
Les 2 pages définies sont :
Majuscules : b1:b60
Minuscules : c1:c60

Encore merci pour tes retours :)
 

Staple1600

XLDnaute Barbatruc
Re

Relire mon précédent message j'ai ajouté un bout de code issu de ta précédente discussion.

Ma réponse n'est ni limite ni piquante
J'ai posté une question basée sur un simple constat
1) 1819 posts= xldnaute accro donc en toute logique bonne maitrise d'Excel et VBA
2) tu as jadis posté une question similaire pour toi résolue

Donc pour moi tu as tous les éléments pour répondre à ta question en adaptant les réponses précédemment fournies.

Si tu prétends ne pas savoir la résoudre, me basant sur le constat précédent, je ne peux qu'émettre l'hypothèse précédemment évoquée ;)

PS: 1818 posts, cela correspond aux messages que tu as écrit sur le forum,donc tu les as forcément lu, non ?
Remarque, si tu écris des messages sur le forum sans les lire, ca peut expliquer cela ;)
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re

Relis le code de job75 et les commentaires que j'ai ajouté
message#6

Merci pour cette nouvelle réponse.
Bien sûr que le code de Job75 fonctionne (comme tous ses codes LOl)

Et, comme tu pourras le voir dans le fichier que j'avais joint, ce code y est mais mon souci est que j'ai besoin que le code dans la feuille (comme dans le post 8), agisse sur mes deux plages :

la plage Majuscules : b1:b60
et la plage Minuscules : c1:c60

J'espère bien m'expliquer (LOL, j'en suis pas très certain)
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
LOL, je vois que je ne sais pas m'expliquer. Je retente :
Si je mets le code :
Code:
If Not Intersect(Target, Range("b1:b60")) Is Nothing Then
Dim maj As Range
Set maj = Me.UsedRange 'plage à adapter
If maj Is Nothing Then Exit Sub
For Each maj In maj 'si entrées multiples (copier-coller)
  If CStr(maj) <> UCase(maj) Then maj = UCase(maj)
Next
End If
La saisie en b1:b60 apparait bien en MAJUSCULE

Si je mets le code :
Code:
If Not Intersect(Target, Range("c1:c60")) Is Nothing Then
Dim min As Range
Set min = Me.UsedRange 'plage à adapter
If min Is Nothing Then Exit Sub
For Each min In min 'si entrées multiples (copier-coller)
  If CStr(min) <> LCase(min) Then min = LCase(min)
Next
End If
La saisie en c1:c60 apparait bien en minuscule

Ce que je voudrais, c'est pouvoir mettre les 2 codes :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("b1:b60")) Is Nothing Then
Dim maj As Range
Set maj = Me.UsedRange 'plage à adapter
If maj Is Nothing Then Exit Sub
For Each maj In maj 'si entrées multiples (copier-coller)
  If CStr(maj) <> UCase(maj) Then maj = UCase(maj)
Next
End If

If Not Intersect(Target, Range("c1:c60")) Is Nothing Then
Dim min As Range
Set min = Me.UsedRange 'plage à adapter
If min Is Nothing Then Exit Sub
For Each min In min 'si entrées multiples (copier-coller)
  If CStr(min) <> LCase(min) Then min = LCase(min)
Next
End If
End Sub
Et que ça fonctionne pour les 2 plages.

Peut-être que ce n'est pas possible ????
 

Staple1600

XLDnaute Barbatruc
Re,

Merci de mettre tes lunettes et de lire attentivement ce que j'écrivais
'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

Je n'ai changé que les références des cellules, je n'ai pas touché au reste de la syntaxe
notamment cette ligne:Intersect(Target, [B1:B60], Me.UsedRange) 'plage à adapter
Toi tu as fais d'autres changement de syntaxe
Ci-dessous code de job75 modifé
(mais pas forcément de la meilleure des manières)
Et cela semble faire ce que tu souhaites
VB:
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, [B1:B60], 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, [C1:C60], 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
Par conséquent, je réitère, tu avais largement de quoi solutionner ton problème avec tes petites mimines tout seul comme un grand ;)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 904
Membres
101 834
dernier inscrit
Jeremy06510