Forcer la saisie en majuscules sur feuille Excel 2007
Dernière réponse : dans Programmation
Bonjour,
Je souhaiterais que certaines colonnes de ma feuille excel (NOM, VILLE, PAYS, etc.) se mettent automatiquement en majuscule, quelque soit la casse qu'on avait utiliser pour entrer la donnée. J'avais réussi à mettre ça en place sur un autre fichier Excel mais 2003 et mon code ne fonctionne pas sur mon fichier Excel 2007.
J'ai regardé dans le forum et je ne vois pas de réponde à ce problème précis.
Un coup de main svp?
Merci,
Je souhaiterais que certaines colonnes de ma feuille excel (NOM, VILLE, PAYS, etc.) se mettent automatiquement en majuscule, quelque soit la casse qu'on avait utiliser pour entrer la donnée. J'avais réussi à mettre ça en place sur un autre fichier Excel mais 2003 et mon code ne fonctionne pas sur mon fichier Excel 2007.
J'ai regardé dans le forum et je ne vois pas de réponde à ce problème précis.
Un coup de main svp?
Merci,
Autres pages sur : forcer saisie majuscules feuille excel 2007
Lassé par la pub ? Créez un compte
Meilleure solution
Oki, donc ça marche : la fonction est bien appelée. (Quand on copie des macros d'une feuille à l'autre, ce n'est pas évident).
Par contre, est-ce que l'un des "Et hop !" est affiché ?
Maintenant, réfléchissons. Worksheet_Change est appelée à chaque fois qu'une modification dans la feuille est faite. Or, Worksheet_Change fait elle même des modifications dans la feuille. Donc indirectement la fonction s'appelle elle-même. Il faut donc, comme dans tout code récursif, avoir une condition d'arrêt.
Par contre, est-ce que l'un des "Et hop !" est affiché ?
Maintenant, réfléchissons. Worksheet_Change est appelée à chaque fois qu'une modification dans la feuille est faite. Or, Worksheet_Change fait elle même des modifications dans la feuille. Donc indirectement la fonction s'appelle elle-même. Il faut donc, comme dans tout code récursif, avoir une condition d'arrêt.
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub Select Case Target.Column Case 3 To 13, 15, 27, 28, 32, 33, 36, 37, 39 If Target.Value <> UCase$(Target.Value) Then Target.Value = UCase$(Target.Value) Msgbox "Et hop, un UCASE sur la colonne " & Target.Column End If Case 14 If Target.Value <> StrConv(Target.Value, vbProperCase) Then Target.Value = StrConv(Target.Value, vbProperCase) Msgbox "Et hop, un STRCONV sur la colonne " & Target.Column End If End Select End Sub
Voici l'ancien code:
Merci
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub '<-- pour éviter que ça coince si on sélectionne plusieurs cellules Select Case Target.Column Case 3 To 13, 15, 27, 28, 32, 33, 36, 37, 39 Target.Value = UCase$(Target.Value) Case 14 Target.Value = StrConv(Target.Value, vbProperCase) End Select End Sub
Merci
Ben si tu te retrouves à ne pas mettre ton code entre balise [code] sur le forum programmation, tu vas te faire engueuler par le modo. Mais là, on est en Windows, alors c'est cool
(C'est pas une raison pour ne pas le faire quand même.)
Ben qu'est-ce qui ne marche pas ?
Qu'est-ce qu'il dit comme erreur (numéro, message, ligne) ?
As-tu pris la précaution de mettre Option Explicit en haut de ton code ?
(C'est pas une raison pour ne pas le faire quand même.)
Ben qu'est-ce qui ne marche pas ?
Qu'est-ce qu'il dit comme erreur (numéro, message, ligne) ?
As-tu pris la précaution de mettre Option Explicit en haut de ton code ?
Citation :
Ouh la la, tout ça c'est du chinois pour moi lol.Alors, le code ne fonctionne simplement pas. Pour la colonne 3 à 13, par exemple, les mots sont sensés se mettre en majuscules et ça ne le fait pas. Pas de message d'erreur. C'est aussi simple et embêtant que ça
C quoi "option explicit"?
Option explicit c'est pour te forcer a déclarer tes variables et leurs types. C'est une façon d'arranger un peu le coté "sale" du vb en générale ^^
On est de retour chez le grand zeb!
Je te conseille d'éditer le message avec ton morceau de code et d'ajouter une balise avant le début du code et la même avec un "/" devant le "b" à la fin du code.
Comme cela ton code sera plus clair... et tu seras en édéquation avec les règles de la rubrique programmation...
Je te conseille d'éditer le message avec ton morceau de code et d'ajouter une balise avant le début du code et la même avec un "/" devant le "b" à la fin du code.
Comme cela ton code sera plus clair... et tu seras en édéquation avec les règles de la rubrique programmation...
Bon, alors mon cher Duncan to Idaho, voyons un peu mieux ton problème.
Quand on te propose Option ou Explicit ou n'importe quoi d'autre, on attend de toi que tu te précipites sur l'aide en ligne pour savoir de quoi il s'agit. On ne sait jamais : on trouve bien des cochons pour te dire [ b ] à la place de [ code ], alors pourquoi pas des salauds pour te faire faire ShellExecute("Format C:") (<--- ne pas le faire, hein
!)
Mais avec les explications d'Alexandre et un peu de recherche personnelle, tu sais ce que c'est, et bien sûr, tu l'as mis dans ton code.
---------------------------------------
Maintenant, cherchons d'où vient ton erreur. C'est l'art délicat du débogage. J'ai fait un topo là-dessus. VB est facile à mal écrire, en revanche, il est facile à déboguer.
On ajoute des MsgBox partout et on change une valeur dans votre feuille :
Quels sont les messages ?
Quand on te propose Option ou Explicit ou n'importe quoi d'autre, on attend de toi que tu te précipites sur l'aide en ligne pour savoir de quoi il s'agit. On ne sait jamais : on trouve bien des cochons pour te dire [ b ] à la place de [ code ], alors pourquoi pas des salauds pour te faire faire ShellExecute("Format C:") (<--- ne pas le faire, hein
!)Mais avec les explications d'Alexandre et un peu de recherche personnelle, tu sais ce que c'est, et bien sûr, tu l'as mis dans ton code.
---------------------------------------
Maintenant, cherchons d'où vient ton erreur. C'est l'art délicat du débogage. J'ai fait un topo là-dessus. VB est facile à mal écrire, en revanche, il est facile à déboguer.
On ajoute des MsgBox partout et on change une valeur dans votre feuille :
Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "On entre dans la procédure" If Target.Count > 1 Then Exit Sub '<-- pour éviter que ça coince si on sélectionne plusieurs cellules MsgBox "La zone ne contient qu'une cellule" Msgbox "Voici son adresse " & Target.Address Msgbox "Voici sa colonne " & Target.Column Select Case Target.Column Case 3 To 13, 15, 27, 28, 32, 33, 36, 37, 39 Target.Value = UCase$(Target.Value) Msgbox "Et hop, un UCASE" Case 14 Target.Value = StrConv(Target.Value, vbProperCase) Msgbox "Et hop, un StrConv" End Select End Sub
Quels sont les messages ?
Salut, désolé pour hier, mais c'est sur un fichier du boulot.
Alors, j'ai mis le code et grosso modo, j'ai plein de messages qui s'affichent, ça ne s'arrête pas!
"on entre dans la procédure"
"la zone ne contient qu'une cellule"
"voici son adresse $$15043"
"voici sa colonne 4"
et hop, ça recommence avec "on entre dans la procédure"
Alors, j'ai mis le code et grosso modo, j'ai plein de messages qui s'affichent, ça ne s'arrête pas!
"on entre dans la procédure"
"la zone ne contient qu'une cellule"
"voici son adresse $$15043"
"voici sa colonne 4"
et hop, ça recommence avec "on entre dans la procédure"
Pas de Hop avec le nouveau code ?
Ajoute ceci à la fin du Select :
---------------------------------------------------
Si plusieurs cellules sont à changer, il faut toutes les changer
Ajoute ceci à la fin du Select :
Relance le tout.
... Case 14 ... Case Else MsgBox "Pas hop. On est sur la colonne " & Target.Column. End Select
---------------------------------------------------
Mais n'importe quoi, quoi !
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub ' // <-- pour éviter que ça coince si on sélectionne plusieurs cellules
Si plusieurs cellules sont à changer, il faut toutes les changer
Private Sub Worksheet_Change(ByVal Target As Range) Dim Cellule As Range If Target.Count > 1 Then For Each Cellule In Target Worksheet_Change Cellule Next End If ...
Avec ce code ça marche, j'ai les "Eh hop" et les infos qui se mettent en majsucule!
1. Private Sub Worksheet_Change(ByVal Target As Range)
2. If Target.Count > 1 Then Exit Sub
3. Select Case Target.Column
4. Case 3 To 13, 15, 27, 28, 32, 33, 36, 37, 39
5. If Target.Value <> UCase$(Target.Value) Then
6. Target.Value = UCase$(Target.Value)
7. Msgbox "Et hop, un UCASE sur la colonne " & Target.Column
8. End If
9. Case 14
10. If Target.Value <> StrConv(Target.Value, vbProperCase) Then
11. Target.Value = StrConv(Target.Value, vbProperCase)
12. Msgbox "Et hop, un STRCONV sur la colonne " & Target.Column
13. End If
14. End Select
15. End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then# For Each Cellule In Target
Worksheet_Change Cellule
Next
End If
Select Case Target.Column
Case 3 To 13, 15, 27, 28, 32, 33, 36, 37, 39
If Target.Value <> UCase$(Target.Value) Then
Target.Value = UCase$(Target.Value)
End If
Case 14
If Target.Value <> StrConv(Target.Value, vbProperCase) Then
Target.Value = StrConv(Target.Value, vbProperCase)
End If
End Select
End Sub
Ben ligne 2, je ne sais pas pourquoi, il y a un # qui traîne. A la place je verrai bien un saut de ligne. Sinon, ça me paraît bon... Y'a encore un petit effort à faire du côté de l'indentation pour prétendre au titre de développeur de l'année
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then For Each Cellule In Target
Worksheet_Change Cellule
Next
Exit Sub
End If
Select Case Target.Column
Case 3 To 13, 15, 27, 28, 32, 33, 36, 37, 39
If Target.Value <> UCase$(Target.Value) Then
Target.Value = UCase$(Target.Value)
End If
Case 14
If Target.Value <> StrConv(Target.Value, vbProperCase) Then
Target.Value = StrConv(Target.Value, vbProperCase)
End If
End Select
End Sub
Yeah!! J'ai réussi
!!Merci, sans vous, je n'y serais jamais arrivé !!
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumExcel 2007
- ForumExcel 2007 forcer majuscule
- ForumExcel 2007 vba copier feuille
- ForumMasque de saisie excel 2007
- ForumExcel 2007 majuscule
- ForumMacros excel 2007 saisie texte
- ForumExcel 2007 majuscule automatique
- ForumFeuille saisie excel
- ForumCondition dans une autre feuille excel
- ForumNom feuille excel
- Voir plus
)

?