OVH Cloud OVH Cloud

Saisie Noms propres

10 réponses
Avatar
Quaisako
Bonsoir le Forum,

J'ai 2 questions concernant la casse.

===== 1 =====

J'utilise ce code pour mettre en majuscules la plage "C7:C50".
Aucun souci.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C7:C50")) Is Nothing Then Target =
UCase(Target)

End Sub

Je voudrais mettre en Noms propres la plage "D7:D50".
Je ne parviens pas à utiliser "Proper".
Pouvez-vous m'explquer comment ?


===== 2 ======

Le code ci-dessous me permet de créer une feuille , et de nommer la feuille
créée à l'aide d'une Inputbox.

Comment forcer la saisie du nom de la feuille en majuscule ?

'===================================
'Ajouter une feuille. 'Denis Michon.
'===================================
Private Sub CommandButton1_Click()
Dim Sh As Worksheet
Dim Reponse As String
Dim MonNom As String
Dim BonNom As Boolean
Dim LeString
LeString = ":\/?*[]"

Do
BonNom = True
Reponse = InputBox("Pour quel élève souhaitez-vous créer" _
+ vbCrLf + "une nouvelle feuille ?", _
"Baptisez votre feuille ", MonNom)
If Reponse <> "" Then

'Vérifier que le nom n'existe pas déjà...
For a = 1 To ActiveWorkbook.Worksheets.Count
If UCase(Reponse) = UCase(Worksheets(a).Name) Then
supp = MsgBox( _
"Vous possédez une feuille portant déjà ce nom,"
_
+ vbCrLf + vbCrLf + _
"Désirez-vous la remplacer?.", vbYesNo +
vbOKOnly, _
"Nom existant déjà")
If supp = vbYes Then
Application.DisplayAlerts = False
Worksheets(Reponse).Delete
Application.DisplayAlerts = True
Exit For
Else
BonNom = False
MonNom = Reponse
Exit For
End If
End If
Next

'Vérifier que le nombre de caractères du nom ne dépassent 31...
If Len(Reponse) > 31 Then
MsgBox "Le nombre de caractères (" & _
Len(Reponse) & ") de votre nom dépasse" _
+ vbCrLf + " celui permis (31) par excel.", _
vbCritical + vbInformation, "Nom trop long"
BonNom = False
MonNom = Reponse
End If

'Vérifier l'emploi de caractères interdits...dans le nom
For a = 1 To Len(LeString)
If InStr(1, Reponse, Mid(LeString, a, 1), vbTextCompare) > 0
Then
MsgBox "Les caractères suivants: " & _
LeString & " sont interdits" _
+ vbCrLf + "dans le nom d'une feuille.", _
vbCritical + vbOKOnly, "Caractère interdit"
BonNom = False
MonNom = Reponse
Exit For
End If
Next
Else
Exit Sub
End If
Loop Until BonNom = True

'Set Sh = Worksheets.Add(after:=Worksheets(Worksheets.Count))
Sheets.Add after:=Sheets(Sheets.Count), _
Type:=Application.TemplatesPath & "Modèle_notation.xlt"
ActiveSheet.Name = Reponse

'Copie des formules pour le prénom et la classe.
With ActiveSheet
.Select
.Range("A2").Select
ActiveCell.FormulaLocal = "=RECHERCHEV(A1;Classe!C7:D50;2)"
.Range("A3").Select
ActiveCell.FormulaLocal = "=Classe!C2"
.Range("A7").Select
End With

End Sub

Merci d'avance
Jipé

10 réponses

Avatar
Lionel
Bonjour Jipé,

Essaie ce code pour la procédure événementielle :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim Cell As Range
'
With Application
If Target.Text <> "" Then
.EnableEvents = False
If Not Intersect(Target, Range("C7:C50")) Is Nothing Then
'Colonne des noms en majuscule.
Target = UCase(Target)
ElseIf Not Intersect(Target, Range("D6:D50")) Is Nothing Then
'Colonne des prénoms en NomPropre.
Target = Application.WorksheetFunction.Proper(Target)
End If
.EnableEvents = True
End If
End With
End Sub

Amicalement
Lionel

"Quaisako" a écrit dans le message de
news:%
Bonjour le Forum,

Merci Lionel, mais malgré xxxx tentatives je ne parviens à rien.
Pour Ucase et Lcase, aucun souci, mais grosse prise de tête avec Proper.
Jipé

"Lionel" a écrit dans le message de news:
43ddf873$0$6649$
Bonjour,

Même s'il ne faut pas l'utiliser à tort et à travers, dans la cas
présent,


pour éviter une nouvel appel deWorksheet_Change à chaque modification de
cellule, je te conseille de placer dans le code Application.EnableEvents
False, sans omettre de le positionner de nouveau à True avant la sortie
de


la procédure événementielle.

Amicalement
Lionel

"Quaisako" a écrit dans le message de
news:
Bonjour le Forum,

dans ce code, çà boucle sans arrêt.
où est l'erreur ?
Merci
Jipé

Private Sub Worksheet_Change(ByVal Target As Range)

'Colonne des noms en majuscule.
If Not Intersect(Target, Range("C7:C50")) Is Nothing Then Target > >> UCase(Target)

'Colonne des prénoms en NomPropre.
Range("D6:D50").Select
For Each cell In Selection
cell.Value = Application.WorksheetFunction.Proper(cell.Value)
Next

End Sub










Avatar
isabelle
bonjour Jipé,

remplace
ActiveSheet.Name = Reponse
par
ActiveSheet.Name = Application.Proper(Reponse)

isabelle

Bonsoir le Forum,

J'ai 2 questions concernant la casse.

===== 1 ==== >
J'utilise ce code pour mettre en majuscules la plage "C7:C50".
Aucun souci.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C7:C50")) Is Nothing Then Target =
UCase(Target)

End Sub

Je voudrais mettre en Noms propres la plage "D7:D50".
Je ne parviens pas à utiliser "Proper".
Pouvez-vous m'explquer comment ?


===== 2 ===== >
Le code ci-dessous me permet de créer une feuille , et de nommer la feuille
créée à l'aide d'une Inputbox.

Comment forcer la saisie du nom de la feuille en majuscule ?

'================================== > 'Ajouter une feuille. 'Denis Michon.
'================================== > Private Sub CommandButton1_Click()
Dim Sh As Worksheet
Dim Reponse As String
Dim MonNom As String
Dim BonNom As Boolean
Dim LeString
LeString = ":/?*[]"

Do
BonNom = True
Reponse = InputBox("Pour quel élève souhaitez-vous créer" _
+ vbCrLf + "une nouvelle feuille ?", _
"Baptisez votre feuille ", MonNom)
If Reponse <> "" Then

'Vérifier que le nom n'existe pas déjà...
For a = 1 To ActiveWorkbook.Worksheets.Count
If UCase(Reponse) = UCase(Worksheets(a).Name) Then
supp = MsgBox( _
"Vous possédez une feuille portant déjà ce nom,"
_
+ vbCrLf + vbCrLf + _
"Désirez-vous la remplacer?.", vbYesNo +
vbOKOnly, _
"Nom existant déjà")
If supp = vbYes Then
Application.DisplayAlerts = False
Worksheets(Reponse).Delete
Application.DisplayAlerts = True
Exit For
Else
BonNom = False
MonNom = Reponse
Exit For
End If
End If
Next

'Vérifier que le nombre de caractères du nom ne dépassent 31...
If Len(Reponse) > 31 Then
MsgBox "Le nombre de caractères (" & _
Len(Reponse) & ") de votre nom dépasse" _
+ vbCrLf + " celui permis (31) par excel.", _
vbCritical + vbInformation, "Nom trop long"
BonNom = False
MonNom = Reponse
End If

'Vérifier l'emploi de caractères interdits...dans le nom
For a = 1 To Len(LeString)
If InStr(1, Reponse, Mid(LeString, a, 1), vbTextCompare) > 0
Then
MsgBox "Les caractères suivants: " & _
LeString & " sont interdits" _
+ vbCrLf + "dans le nom d'une feuille.", _
vbCritical + vbOKOnly, "Caractère interdit"
BonNom = False
MonNom = Reponse
Exit For
End If
Next
Else
Exit Sub
End If
Loop Until BonNom = True

'Set Sh = Worksheets.Add(after:=Worksheets(Worksheets.Count))
Sheets.Add after:=Sheets(Sheets.Count), _
Type:=Application.TemplatesPath & "Modèle_notation.xlt"
ActiveSheet.Name = Reponse

'Copie des formules pour le prénom et la classe.
With ActiveSheet
.Select
.Range("A2").Select
ActiveCell.FormulaLocal = "=RECHERCHEV(A1;Classe!C7:D50;2)"
.Range("A3").Select
ActiveCell.FormulaLocal = "=Classe!C2"
.Range("A7").Select
End With

End Sub

Merci d'avance
Jipé




Avatar
Quaisako
Bonsoir Isabelle,
Merci.
C'est OK pour ceci.
ActiveSheet.Name = Application.Proper(Reponse)

Mais avec Ucase, ça ne fonctionne pas.
ActiveSheet.Name = Application.Ucase(Reponse)

Ucase, ne s'utilise pas de la même façon ?
Jipé

"isabelle" a écrit dans le message de news:

bonjour Jipé,

remplace
ActiveSheet.Name = Reponse
par
ActiveSheet.Name = Application.Proper(Reponse)

isabelle

Bonsoir le Forum,

J'ai 2 questions concernant la casse.

===== 1 ==== >>
J'utilise ce code pour mettre en majuscules la plage "C7:C50".
Aucun souci.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C7:C50")) Is Nothing Then Target =
UCase(Target)

End Sub

Je voudrais mettre en Noms propres la plage "D7:D50".
Je ne parviens pas à utiliser "Proper".
Pouvez-vous m'explquer comment ?


===== 2 ===== >>
Le code ci-dessous me permet de créer une feuille , et de nommer la
feuille créée à l'aide d'une Inputbox.

Comment forcer la saisie du nom de la feuille en majuscule ?

'================================== >> 'Ajouter une feuille. 'Denis Michon.
'================================== >> Private Sub CommandButton1_Click()
Dim Sh As Worksheet
Dim Reponse As String
Dim MonNom As String
Dim BonNom As Boolean
Dim LeString
LeString = ":/?*[]"

Do
BonNom = True
Reponse = InputBox("Pour quel élève souhaitez-vous créer" _
+ vbCrLf + "une nouvelle feuille ?", _
"Baptisez votre feuille ", MonNom)
If Reponse <> "" Then

'Vérifier que le nom n'existe pas déjà...
For a = 1 To ActiveWorkbook.Worksheets.Count
If UCase(Reponse) = UCase(Worksheets(a).Name) Then
supp = MsgBox( _
"Vous possédez une feuille portant déjà ce
nom," _
+ vbCrLf + vbCrLf + _
"Désirez-vous la remplacer?.", vbYesNo +
vbOKOnly, _
"Nom existant déjà")
If supp = vbYes Then
Application.DisplayAlerts = False
Worksheets(Reponse).Delete
Application.DisplayAlerts = True
Exit For
Else
BonNom = False
MonNom = Reponse
Exit For
End If
End If
Next

'Vérifier que le nombre de caractères du nom ne dépassent 31...
If Len(Reponse) > 31 Then
MsgBox "Le nombre de caractères (" & _
Len(Reponse) & ") de votre nom dépasse" _
+ vbCrLf + " celui permis (31) par excel.", _
vbCritical + vbInformation, "Nom trop long"
BonNom = False
MonNom = Reponse
End If

'Vérifier l'emploi de caractères interdits...dans le nom
For a = 1 To Len(LeString)
If InStr(1, Reponse, Mid(LeString, a, 1), vbTextCompare)
0 Then
MsgBox "Les caractères suivants: " & _

LeString & " sont interdits" _
+ vbCrLf + "dans le nom d'une feuille.", _
vbCritical + vbOKOnly, "Caractère interdit"
BonNom = False
MonNom = Reponse
Exit For
End If
Next
Else
Exit Sub
End If
Loop Until BonNom = True

'Set Sh = Worksheets.Add(after:=Worksheets(Worksheets.Count))
Sheets.Add after:=Sheets(Sheets.Count), _
Type:=Application.TemplatesPath & "Modèle_notation.xlt"
ActiveSheet.Name = Reponse

'Copie des formules pour le prénom et la classe.
With ActiveSheet
.Select
.Range("A2").Select
ActiveCell.FormulaLocal = "=RECHERCHEV(A1;Classe!C7:D50;2)"
.Range("A3").Select
ActiveCell.FormulaLocal = "=Classe!C2"
.Range("A7").Select
End With

End Sub

Merci d'avance
Jipé





Avatar
isabelle
ou bien la version complète :

ActiveSheet.Name = Application.WorksheetFunction.Proper(Reponse)

isabelle

bonjour Jipé,

remplace
ActiveSheet.Name = Reponse
par
ActiveSheet.Name = Application.Proper(Reponse)

isabelle


Bonsoir le Forum,

J'ai 2 questions concernant la casse.

===== 1 ==== >>
J'utilise ce code pour mettre en majuscules la plage "C7:C50".
Aucun souci.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C7:C50")) Is Nothing Then Target =
UCase(Target)

End Sub

Je voudrais mettre en Noms propres la plage "D7:D50".
Je ne parviens pas à utiliser "Proper".
Pouvez-vous m'explquer comment ?


===== 2 ===== >>
Le code ci-dessous me permet de créer une feuille , et de nommer la
feuille créée à l'aide d'une Inputbox.

Comment forcer la saisie du nom de la feuille en majuscule ?

'================================== >> 'Ajouter une feuille. 'Denis Michon.
'================================== >> Private Sub CommandButton1_Click()
Dim Sh As Worksheet
Dim Reponse As String
Dim MonNom As String
Dim BonNom As Boolean
Dim LeString
LeString = ":/?*[]"

Do
BonNom = True
Reponse = InputBox("Pour quel élève souhaitez-vous créer" _
+ vbCrLf + "une nouvelle feuille ?", _
"Baptisez votre feuille ", MonNom)
If Reponse <> "" Then

'Vérifier que le nom n'existe pas déjà...
For a = 1 To ActiveWorkbook.Worksheets.Count
If UCase(Reponse) = UCase(Worksheets(a).Name) Then
supp = MsgBox( _
"Vous possédez une feuille portant déjà ce
nom," _
+ vbCrLf + vbCrLf + _
"Désirez-vous la remplacer?.", vbYesNo +
vbOKOnly, _
"Nom existant déjà")
If supp = vbYes Then
Application.DisplayAlerts = False
Worksheets(Reponse).Delete
Application.DisplayAlerts = True
Exit For
Else
BonNom = False
MonNom = Reponse
Exit For
End If
End If
Next

'Vérifier que le nombre de caractères du nom ne dépassent 31...
If Len(Reponse) > 31 Then
MsgBox "Le nombre de caractères (" & _
Len(Reponse) & ") de votre nom dépasse" _
+ vbCrLf + " celui permis (31) par excel.", _
vbCritical + vbInformation, "Nom trop long"
BonNom = False
MonNom = Reponse
End If

'Vérifier l'emploi de caractères interdits...dans le nom
For a = 1 To Len(LeString)
If InStr(1, Reponse, Mid(LeString, a, 1),
vbTextCompare) > 0 Then
MsgBox "Les caractères suivants: " & _
LeString & " sont interdits" _
+ vbCrLf + "dans le nom d'une feuille.", _
vbCritical + vbOKOnly, "Caractère interdit"
BonNom = False
MonNom = Reponse
Exit For
End If
Next
Else
Exit Sub
End If
Loop Until BonNom = True

'Set Sh = Worksheets.Add(after:=Worksheets(Worksheets.Count))
Sheets.Add after:=Sheets(Sheets.Count), _
Type:=Application.TemplatesPath & "Modèle_notation.xlt"
ActiveSheet.Name = Reponse

'Copie des formules pour le prénom et la classe.
With ActiveSheet
.Select
.Range("A2").Select
ActiveCell.FormulaLocal = "=RECHERCHEV(A1;Classe!C7:D50;2)"
.Range("A3").Select
ActiveCell.FormulaLocal = "=Classe!C2"
.Range("A7").Select
End With

End Sub

Merci d'avance
Jipé





Avatar
isabelle
voici l'exemple fourni dans l'aide xl2002

UCase, fonction, exemple
Cet exemple utilise la fonction UCase pour renvoyer une chaîne dans une version en caractères majuscules.

Dim LowerCase, UpperCase
LowerCase = "Bonjour à tous 1234" ' Chaîne à convertir.
UpperCase = UCase(LowerCase) ' Renvoie "BONJOUR À TOUS 1234".


isabelle


Bonsoir Isabelle,
Merci.
C'est OK pour ceci.
ActiveSheet.Name = Application.Proper(Reponse)

Mais avec Ucase, ça ne fonctionne pas.
ActiveSheet.Name = Application.Ucase(Reponse)

Ucase, ne s'utilise pas de la même façon ?
Jipé

"isabelle" a écrit dans le message de news:


bonjour Jipé,

remplace
ActiveSheet.Name = Reponse
par
ActiveSheet.Name = Application.Proper(Reponse)

isabelle


Bonsoir le Forum,

J'ai 2 questions concernant la casse.

===== 1 ==== >>>
J'utilise ce code pour mettre en majuscules la plage "C7:C50".
Aucun souci.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C7:C50")) Is Nothing Then Target =
UCase(Target)

End Sub

Je voudrais mettre en Noms propres la plage "D7:D50".
Je ne parviens pas à utiliser "Proper".
Pouvez-vous m'explquer comment ?


===== 2 ===== >>>
Le code ci-dessous me permet de créer une feuille , et de nommer la
feuille créée à l'aide d'une Inputbox.

Comment forcer la saisie du nom de la feuille en majuscule ?

'================================== >>>'Ajouter une feuille. 'Denis Michon.
'================================== >>>Private Sub CommandButton1_Click()
Dim Sh As Worksheet
Dim Reponse As String
Dim MonNom As String
Dim BonNom As Boolean
Dim LeString
LeString = ":/?*[]"

Do
BonNom = True
Reponse = InputBox("Pour quel élève souhaitez-vous créer" _
+ vbCrLf + "une nouvelle feuille ?", _
"Baptisez votre feuille ", MonNom)
If Reponse <> "" Then

'Vérifier que le nom n'existe pas déjà...
For a = 1 To ActiveWorkbook.Worksheets.Count
If UCase(Reponse) = UCase(Worksheets(a).Name) Then
supp = MsgBox( _
"Vous possédez une feuille portant déjà ce
nom," _
+ vbCrLf + vbCrLf + _
"Désirez-vous la remplacer?.", vbYesNo +
vbOKOnly, _
"Nom existant déjà")
If supp = vbYes Then
Application.DisplayAlerts = False
Worksheets(Reponse).Delete
Application.DisplayAlerts = True
Exit For
Else
BonNom = False
MonNom = Reponse
Exit For
End If
End If
Next

'Vérifier que le nombre de caractères du nom ne dépassent 31...
If Len(Reponse) > 31 Then
MsgBox "Le nombre de caractères (" & _
Len(Reponse) & ") de votre nom dépasse" _
+ vbCrLf + " celui permis (31) par excel.", _
vbCritical + vbInformation, "Nom trop long"
BonNom = False
MonNom = Reponse
End If

'Vérifier l'emploi de caractères interdits...dans le nom
For a = 1 To Len(LeString)
If InStr(1, Reponse, Mid(LeString, a, 1), vbTextCompare)
0 Then
MsgBox "Les caractères suivants: " & _

LeString & " sont interdits" _
+ vbCrLf + "dans le nom d'une feuille.", _
vbCritical + vbOKOnly, "Caractère interdit"
BonNom = False
MonNom = Reponse
Exit For
End If
Next
Else
Exit Sub
End If
Loop Until BonNom = True

'Set Sh = Worksheets.Add(after:=Worksheets(Worksheets.Count))
Sheets.Add after:=Sheets(Sheets.Count), _
Type:=Application.TemplatesPath & "Modèle_notation.xlt"
ActiveSheet.Name = Reponse

'Copie des formules pour le prénom et la classe.
With ActiveSheet
.Select
.Range("A2").Select
ActiveCell.FormulaLocal = "=RECHERCHEV(A1;Classe!C7:D50;2)"
.Range("A3").Select
ActiveCell.FormulaLocal = "=Classe!C2"
.Range("A7").Select
End With

End Sub

Merci d'avance
Jipé










Avatar
Quaisako
Merci et bonne nuit.
Là, je mélange tout.
Jipé

"isabelle" a écrit dans le message de news:

voici l'exemple fourni dans l'aide xl2002

UCase, fonction, exemple
Cet exemple utilise la fonction UCase pour renvoyer une chaîne dans une
version en caractères majuscules.

Dim LowerCase, UpperCase
LowerCase = "Bonjour à tous 1234" ' Chaîne à convertir.
UpperCase = UCase(LowerCase) ' Renvoie "BONJOUR À TOUS 1234".


isabelle


Bonsoir Isabelle,
Merci.
C'est OK pour ceci.
ActiveSheet.Name = Application.Proper(Reponse)

Mais avec Ucase, ça ne fonctionne pas.
ActiveSheet.Name = Application.Ucase(Reponse)

Ucase, ne s'utilise pas de la même façon ?
Jipé

"isabelle" a écrit dans le message de news:


bonjour Jipé,

remplace
ActiveSheet.Name = Reponse
par
ActiveSheet.Name = Application.Proper(Reponse)

isabelle


Bonsoir le Forum,

J'ai 2 questions concernant la casse.

===== 1 ==== >>>>
J'utilise ce code pour mettre en majuscules la plage "C7:C50".
Aucun souci.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C7:C50")) Is Nothing Then Target =
UCase(Target)

End Sub

Je voudrais mettre en Noms propres la plage "D7:D50".
Je ne parviens pas à utiliser "Proper".
Pouvez-vous m'explquer comment ?


===== 2 ===== >>>>
Le code ci-dessous me permet de créer une feuille , et de nommer la
feuille créée à l'aide d'une Inputbox.

Comment forcer la saisie du nom de la feuille en majuscule ?

'================================== >>>>'Ajouter une feuille. 'Denis Michon.
'================================== >>>>Private Sub CommandButton1_Click()
Dim Sh As Worksheet
Dim Reponse As String
Dim MonNom As String
Dim BonNom As Boolean
Dim LeString
LeString = ":/?*[]"

Do
BonNom = True
Reponse = InputBox("Pour quel élève souhaitez-vous créer" _
+ vbCrLf + "une nouvelle feuille ?", _
"Baptisez votre feuille ", MonNom)
If Reponse <> "" Then

'Vérifier que le nom n'existe pas déjà...
For a = 1 To ActiveWorkbook.Worksheets.Count
If UCase(Reponse) = UCase(Worksheets(a).Name) Then
supp = MsgBox( _
"Vous possédez une feuille portant déjà ce
nom," _
+ vbCrLf + vbCrLf + _
"Désirez-vous la remplacer?.", vbYesNo +
vbOKOnly, _
"Nom existant déjà")
If supp = vbYes Then
Application.DisplayAlerts = False
Worksheets(Reponse).Delete
Application.DisplayAlerts = True
Exit For
Else
BonNom = False
MonNom = Reponse
Exit For
End If
End If
Next

'Vérifier que le nombre de caractères du nom ne dépassent 31...
If Len(Reponse) > 31 Then
MsgBox "Le nombre de caractères (" & _
Len(Reponse) & ") de votre nom dépasse" _
+ vbCrLf + " celui permis (31) par excel.", _
vbCritical + vbInformation, "Nom trop long"
BonNom = False
MonNom = Reponse
End If

'Vérifier l'emploi de caractères interdits...dans le nom
For a = 1 To Len(LeString)
If InStr(1, Reponse, Mid(LeString, a, 1), vbTextCompare)
0 Then
MsgBox "Les caractères suivants: " & _

LeString & " sont interdits" _
+ vbCrLf + "dans le nom d'une feuille.", _
vbCritical + vbOKOnly, "Caractère interdit"
BonNom = False
MonNom = Reponse
Exit For
End If
Next
Else
Exit Sub
End If
Loop Until BonNom = True

'Set Sh = Worksheets.Add(after:=Worksheets(Worksheets.Count))
Sheets.Add after:=Sheets(Sheets.Count), _
Type:=Application.TemplatesPath & "Modèle_notation.xlt"
ActiveSheet.Name = Reponse

'Copie des formules pour le prénom et la classe.
With ActiveSheet
.Select
.Range("A2").Select
ActiveCell.FormulaLocal = "=RECHERCHEV(A1;Classe!C7:D50;2)"
.Range("A3").Select
ActiveCell.FormulaLocal = "=Classe!C2"
.Range("A7").Select
End With

End Sub

Merci d'avance
Jipé











Avatar
Quaisako
Bonjour le Forum,

dans ce code, çà boucle sans arrêt.
où est l'erreur ?
Merci
Jipé

Private Sub Worksheet_Change(ByVal Target As Range)

'Colonne des noms en majuscule.
If Not Intersect(Target, Range("C7:C50")) Is Nothing Then Target =
UCase(Target)

'Colonne des prénoms en NomPropre.
Range("D6:D50").Select
For Each cell In Selection
cell.Value = Application.WorksheetFunction.Proper(cell.Value)
Next

End Sub


"isabelle" a écrit dans le message de news:
%
ou bien la version complète :

ActiveSheet.Name = Application.WorksheetFunction.Proper(Reponse)

isabelle

bonjour Jipé,

remplace
ActiveSheet.Name = Reponse
par
ActiveSheet.Name = Application.Proper(Reponse)

isabelle


Bonsoir le Forum,

J'ai 2 questions concernant la casse.

===== 1 ==== >>>
J'utilise ce code pour mettre en majuscules la plage "C7:C50".
Aucun souci.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C7:C50")) Is Nothing Then Target =
UCase(Target)

End Sub

Je voudrais mettre en Noms propres la plage "D7:D50".
Je ne parviens pas à utiliser "Proper".
Pouvez-vous m'explquer comment ?


===== 2 ===== >>>
Le code ci-dessous me permet de créer une feuille , et de nommer la
feuille créée à l'aide d'une Inputbox.

Comment forcer la saisie du nom de la feuille en majuscule ?

'================================== >>> 'Ajouter une feuille. 'Denis Michon.
'================================== >>> Private Sub CommandButton1_Click()
Dim Sh As Worksheet
Dim Reponse As String
Dim MonNom As String
Dim BonNom As Boolean
Dim LeString
LeString = ":/?*[]"

Do
BonNom = True
Reponse = InputBox("Pour quel élève souhaitez-vous créer" _
+ vbCrLf + "une nouvelle feuille ?", _
"Baptisez votre feuille ", MonNom)
If Reponse <> "" Then

'Vérifier que le nom n'existe pas déjà...
For a = 1 To ActiveWorkbook.Worksheets.Count
If UCase(Reponse) = UCase(Worksheets(a).Name) Then
supp = MsgBox( _
"Vous possédez une feuille portant déjà ce
nom," _
+ vbCrLf + vbCrLf + _
"Désirez-vous la remplacer?.", vbYesNo +
vbOKOnly, _
"Nom existant déjà")
If supp = vbYes Then
Application.DisplayAlerts = False
Worksheets(Reponse).Delete
Application.DisplayAlerts = True
Exit For
Else
BonNom = False
MonNom = Reponse
Exit For
End If
End If
Next

'Vérifier que le nombre de caractères du nom ne dépassent 31...
If Len(Reponse) > 31 Then
MsgBox "Le nombre de caractères (" & _
Len(Reponse) & ") de votre nom dépasse" _
+ vbCrLf + " celui permis (31) par excel.", _
vbCritical + vbInformation, "Nom trop long"
BonNom = False
MonNom = Reponse
End If

'Vérifier l'emploi de caractères interdits...dans le nom
For a = 1 To Len(LeString)
If InStr(1, Reponse, Mid(LeString, a, 1), vbTextCompare)
0 Then
MsgBox "Les caractères suivants: " & _

LeString & " sont interdits" _
+ vbCrLf + "dans le nom d'une feuille.", _
vbCritical + vbOKOnly, "Caractère interdit"
BonNom = False
MonNom = Reponse
Exit For
End If
Next
Else
Exit Sub
End If
Loop Until BonNom = True

'Set Sh = Worksheets.Add(after:=Worksheets(Worksheets.Count))
Sheets.Add after:=Sheets(Sheets.Count), _
Type:=Application.TemplatesPath & "Modèle_notation.xlt"
ActiveSheet.Name = Reponse

'Copie des formules pour le prénom et la classe.
With ActiveSheet
.Select
.Range("A2").Select
ActiveCell.FormulaLocal = "=RECHERCHEV(A1;Classe!C7:D50;2)"
.Range("A3").Select
ActiveCell.FormulaLocal = "=Classe!C2"
.Range("A7").Select
End With

End Sub

Merci d'avance
Jipé








Avatar
Lionel
Bonjour,

Même s'il ne faut pas l'utiliser à tort et à travers, dans la cas présent,
pour éviter une nouvel appel deWorksheet_Change à chaque modification de
cellule, je te conseille de placer dans le code Application.EnableEvents False, sans omettre de le positionner de nouveau à True avant la sortie de
la procédure événementielle.

Amicalement
Lionel

"Quaisako" a écrit dans le message de
news:
Bonjour le Forum,

dans ce code, çà boucle sans arrêt.
où est l'erreur ?
Merci
Jipé

Private Sub Worksheet_Change(ByVal Target As Range)

'Colonne des noms en majuscule.
If Not Intersect(Target, Range("C7:C50")) Is Nothing Then Target > UCase(Target)

'Colonne des prénoms en NomPropre.
Range("D6:D50").Select
For Each cell In Selection
cell.Value = Application.WorksheetFunction.Proper(cell.Value)
Next

End Sub


Avatar
Quaisako
Bonjour le Forum,

Merci Lionel, mais malgré xxxx tentatives je ne parviens à rien.
Pour Ucase et Lcase, aucun souci, mais grosse prise de tête avec Proper.
Jipé

"Lionel" a écrit dans le message de news:
43ddf873$0$6649$
Bonjour,

Même s'il ne faut pas l'utiliser à tort et à travers, dans la cas présent,
pour éviter une nouvel appel deWorksheet_Change à chaque modification de
cellule, je te conseille de placer dans le code Application.EnableEvents > False, sans omettre de le positionner de nouveau à True avant la sortie de
la procédure événementielle.

Amicalement
Lionel

"Quaisako" a écrit dans le message de
news:
Bonjour le Forum,

dans ce code, çà boucle sans arrêt.
où est l'erreur ?
Merci
Jipé

Private Sub Worksheet_Change(ByVal Target As Range)

'Colonne des noms en majuscule.
If Not Intersect(Target, Range("C7:C50")) Is Nothing Then Target >> UCase(Target)

'Colonne des prénoms en NomPropre.
Range("D6:D50").Select
For Each cell In Selection
cell.Value = Application.WorksheetFunction.Proper(cell.Value)
Next

End Sub






Avatar
Quaisako
Bonjour le Forum,

Merci beaucoup Lionel, c'est tout bon.

Jipé

"Lionel" a écrit dans le message de news:
43df770a$0$18318$
Bonjour Jipé,

Essaie ce code pour la procédure événementielle :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim Cell As Range
'
With Application
If Target.Text <> "" Then
.EnableEvents = False
If Not Intersect(Target, Range("C7:C50")) Is Nothing Then
'Colonne des noms en majuscule.
Target = UCase(Target)
ElseIf Not Intersect(Target, Range("D6:D50")) Is Nothing Then
'Colonne des prénoms en NomPropre.
Target = Application.WorksheetFunction.Proper(Target)
End If
.EnableEvents = True
End If
End With
End Sub

Amicalement
Lionel

"Quaisako" a écrit dans le message de
news:%
Bonjour le Forum,

Merci Lionel, mais malgré xxxx tentatives je ne parviens à rien.
Pour Ucase et Lcase, aucun souci, mais grosse prise de tête avec Proper.
Jipé

"Lionel" a écrit dans le message de news:
43ddf873$0$6649$
Bonjour,

Même s'il ne faut pas l'utiliser à tort et à travers, dans la cas
présent,


pour éviter une nouvel appel deWorksheet_Change à chaque modification
de
cellule, je te conseille de placer dans le code
Application.EnableEvents
False, sans omettre de le positionner de nouveau à True avant la sortie
de



la procédure événementielle.

Amicalement
Lionel

"Quaisako" a écrit dans le message de
news:
Bonjour le Forum,

dans ce code, çà boucle sans arrêt.
où est l'erreur ?
Merci
Jipé

Private Sub Worksheet_Change(ByVal Target As Range)

'Colonne des noms en majuscule.
If Not Intersect(Target, Range("C7:C50")) Is Nothing Then Target >> >> UCase(Target)

'Colonne des prénoms en NomPropre.
Range("D6:D50").Select
For Each cell In Selection
cell.Value = Application.WorksheetFunction.Proper(cell.Value)
Next

End Sub