Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Conversion Première lettre majuscule

10 réponses
Avatar
Jocelyne
Bonjour à,

J’ai créé une UserForm qui transmet dans un document à l’écran les
informations tout en majuscules.

J’aimerais pouvoir enregistrer le document sous un nom qui sera généré par
le contenu des signets mais que ce contenu soit transformé pour obtenir la
première lettre en majuscules et les autres lettres en minuscules.

Par exemple, pour LUCILLE RIVARD 6/10/70 je voudrais que le document
s’enregistre sous RivardLuc1970-10-06.

Je n’arrive pas à trouver comment faire la conversion en FirstCaps. Voici
les instructions que j’ai écrites jusqu’à maintenant et j’y suis
presqu’arrivée mais cette conversion manque.

Sub Enr()

Dim Nom As String
Dim Prenom As String
Dim DateNais As String

Prenom = ActiveDocument.Bookmarks("PrenomP").Range.Text
Nom = ActiveDocument.Bookmarks("NomP").Range.Text
DateNais = ActiveDocument.Bookmarks("DateNais").Range.Text

With Dialogs(wdDialogFileSaveAs)
‘ici j’ai mis en lettres minuscules car je ne sais pas la commande pour la
première lettre et majuscules
.Name = LCase(Nom) & LCase(Left(Prenom, 3)) & Format(DateNais, "yyyy/mm/dd")
.Show
End With

End Sub

Merci de votre aide

Jocelyne

10 réponses

Avatar
Dom
Bonjour,

pour convertir la 1re lettre d'une chaîne en majuscule, tu peux utiliser:
strconv(Nom, vbProperCase)
ou
strconv(Nom, 3)

ce qui devrait te donner
... strconv(Nom, vbProperCase) & Lcase(Left(Prenom, 3)) ...

Dom



Bonjour à,

J’ai créé une UserForm qui transmet dans un document à l’écran les
informations tout en majuscules.

J’aimerais pouvoir enregistrer le document sous un nom qui sera généré par
le contenu des signets mais que ce contenu soit transformé pour obtenir la
première lettre en majuscules et les autres lettres en minuscules.

Par exemple, pour LUCILLE RIVARD 6/10/70 je voudrais que le document
s’enregistre sous RivardLuc1970-10-06.

Je n’arrive pas à trouver comment faire la conversion en FirstCaps. Voici
les instructions que j’ai écrites jusqu’à maintenant et j’y suis
presqu’arrivée mais cette conversion manque.

Sub Enr()

Dim Nom As String
Dim Prenom As String
Dim DateNais As String

Prenom = ActiveDocument.Bookmarks("PrenomP").Range.Text
Nom = ActiveDocument.Bookmarks("NomP").Range.Text
DateNais = ActiveDocument.Bookmarks("DateNais").Range.Text

With Dialogs(wdDialogFileSaveAs)
‘ici j’ai mis en lettres minuscules car je ne sais pas la commande pour la
première lettre et majuscules
.Name = LCase(Nom) & LCase(Left(Prenom, 3)) & Format(DateNais, "yyyy/mm/dd")
.Show
End With

End Sub

Merci de votre aide

Jocelyne



Avatar
Dom
Gulp ! Pas vu que tu voulais aussi l'initiale du début du prénom en majuscule.
Mais ce n'est pas plus compliqué, tu as ce qu'il faut pour corriger :)

Dom



Bonjour,

pour convertir la 1re lettre d'une chaîne en majuscule, tu peux utiliser:
strconv(Nom, vbProperCase)
ou
strconv(Nom, 3)

ce qui devrait te donner
... strconv(Nom, vbProperCase) & Lcase(Left(Prenom, 3)) ...

Dom



Bonjour à,

J’ai créé une UserForm qui transmet dans un document à l’écran les
informations tout en majuscules.

J’aimerais pouvoir enregistrer le document sous un nom qui sera généré par
le contenu des signets mais que ce contenu soit transformé pour obtenir la
première lettre en majuscules et les autres lettres en minuscules.

Par exemple, pour LUCILLE RIVARD 6/10/70 je voudrais que le document
s’enregistre sous RivardLuc1970-10-06.

Je n’arrive pas à trouver comment faire la conversion en FirstCaps. Voici
les instructions que j’ai écrites jusqu’à maintenant et j’y suis
presqu’arrivée mais cette conversion manque.

Sub Enr()

Dim Nom As String
Dim Prenom As String
Dim DateNais As String

Prenom = ActiveDocument.Bookmarks("PrenomP").Range.Text
Nom = ActiveDocument.Bookmarks("NomP").Range.Text
DateNais = ActiveDocument.Bookmarks("DateNais").Range.Text

With Dialogs(wdDialogFileSaveAs)
‘ici j’ai mis en lettres minuscules car je ne sais pas la commande pour la
première lettre et majuscules
.Name = LCase(Nom) & LCase(Left(Prenom, 3)) & Format(DateNais, "yyyy/mm/dd")
.Show
End With

End Sub

Merci de votre aide

Jocelyne





Avatar
Jocelyne
C’est super! Ça fonctionne. Merci énormément de votre aide. Puis-je me
permettre une autre question.

En partant du même raisonnement, j’essaie de créer un dossier avec les
instructions suivantes :

Sub CreerRep()

Dim NomRep As String
Dim PrenomRep As String
Dim DateNaisRep As String

PrenomRep = ActiveDocument.Bookmarks("PrenomP").Range.Text
NomRep = ActiveDocument.Bookmarks("NomP").Range.Text
DateNaisRep = ActiveDocument.Bookmarks("DateNais").Range.Text

ChDir "C:UsersPropriétaireDocumentsConsultations"
'MkDir StrConv(NomRep, vbProperCase) & StrConv(PrenomRep, vbProperCase) &
Format(DateNaisRep, "yyyymmdd")

End Sub

Le problème survient à l’instruction MkDir, il indique que le chemin est
introuvable. Par contre, si je n’utilise pas de variables, par exemple, MkDir
"Jocelyne", le dossier se crée tel qu’indiqué à l’intérieur du dossier
Consultations.

Cette commande peut-elle être utilisée avec des variables. Où est l’erreur?

Merci encore de nous aider.

Jocelyne



Gulp ! Pas vu que tu voulais aussi l'initiale du début du prénom en majuscule.
Mais ce n'est pas plus compliqué, tu as ce qu'il faut pour corriger :)

Dom



Bonjour,

pour convertir la 1re lettre d'une chaîne en majuscule, tu peux utiliser:
strconv(Nom, vbProperCase)
ou
strconv(Nom, 3)

ce qui devrait te donner
... strconv(Nom, vbProperCase) & Lcase(Left(Prenom, 3)) ...

Dom



Bonjour à,

J’ai créé une UserForm qui transmet dans un document à l’écran les
informations tout en majuscules.

J’aimerais pouvoir enregistrer le document sous un nom qui sera généré par
le contenu des signets mais que ce contenu soit transformé pour obtenir la
première lettre en majuscules et les autres lettres en minuscules.

Par exemple, pour LUCILLE RIVARD 6/10/70 je voudrais que le document
s’enregistre sous RivardLuc1970-10-06.

Je n’arrive pas à trouver comment faire la conversion en FirstCaps. Voici
les instructions que j’ai écrites jusqu’à maintenant et j’y suis
presqu’arrivée mais cette conversion manque.

Sub Enr()

Dim Nom As String
Dim Prenom As String
Dim DateNais As String

Prenom = ActiveDocument.Bookmarks("PrenomP").Range.Text
Nom = ActiveDocument.Bookmarks("NomP").Range.Text
DateNais = ActiveDocument.Bookmarks("DateNais").Range.Text

With Dialogs(wdDialogFileSaveAs)
‘ici j’ai mis en lettres minuscules car je ne sais pas la commande pour la
première lettre et majuscules
.Name = LCase(Nom) & LCase(Left(Prenom, 3)) & Format(DateNais, "yyyy/mm/dd")
.Show
End With

End Sub

Merci de votre aide

Jocelyne







Avatar
Geo
Bonjour

ChDir "C:UsersPropriétaireDocumentsConsultations"
'MkDir StrConv(NomRep, vbProperCase) & StrConv(PrenomRep, vbProperCase) &
Format(DateNaisRep, "yyyymmdd")


Pour mettre au point il est plus facile de passer par des variables.
Faites :

Dim Dossier as string

Dossier = "C:UsersPropriétaireDocumentsConsultations" _
& StrConv(NomRep, vbProperCase) & StrConv(PrenomRep, vbProperCase) _
& Format(DateNaisRep, "yyyymmdd")

Debug.print Dossier
Mkdir Dossier

A défaut ajoutez avant le mkdir :

Debug.print "Nom:" &<StrConv(NomRep, vbProperCase)
Debug.print "Prénom:" & StrConv(PrenomRep, vbProperCase)
Debug.print "Date:" Format(DateNaisRep, "yyyymmdd")

--
A+

Avatar
Jocelyne
Merci Geo,

Mais j’ai toujours l’erreur d’exécution ‘76’ Chemin d’accès introuvable.

Cependant, avec tes instructions DebugPrint, j’ai pu voir qu’il y a un
retour de ligne qui s’ajoute avant la date et je croyais que c’est cela qui
causait l’erreur. Mais non, j’ai enlevé cette partie du nom et j’ai toujours
l’erreur de création.

Il y a quelque chose qui cloche dans mes variables car celles-ci sont
correctes dans la fenêtre d’exécution elles affichent les bonnes valeurs mais
ne sont pas utilisables pour la création du dossier.

J’ai fait un test en mettant moi-même les valeurs dans les variables NomRep
PrenomRep et DateNaisRep et le dossier se crée.

???Qu’est-ce qui empêche la création du dossier???

Merci de m’aider à résoudre ce problème.
Jocelyne


Bonjour

ChDir "C:UsersPropriétaireDocumentsConsultations"
'MkDir StrConv(NomRep, vbProperCase) & StrConv(PrenomRep, vbProperCase) &
Format(DateNaisRep, "yyyymmdd")


Pour mettre au point il est plus facile de passer par des variables.
Faites :

Dim Dossier as string

Dossier = "C:UsersPropriétaireDocumentsConsultations" _
& StrConv(NomRep, vbProperCase) & StrConv(PrenomRep, vbProperCase) _
& Format(DateNaisRep, "yyyymmdd")

Debug.print Dossier
Mkdir Dossier

A défaut ajoutez avant le mkdir :

Debug.print "Nom:" &<StrConv(NomRep, vbProperCase)
Debug.print "Prénom:" & StrConv(PrenomRep, vbProperCase)
Debug.print "Date:" Format(DateNaisRep, "yyyymmdd")

--
A+






Avatar
Geo

Merci de m’aider à résoudre ce problème.


L'hypothèse la plus vraisemblable est qu'il y a un caractère interdit
dans votre nom de dossier, par exemple une virgule, une astérisque, ou
autre.
C'est surtout sur la date que j'aurais un doute.

Autre hypothèse le nom complet du dossier est trop long, plus de 250
caractères.

Si vous ne le voyez pas directement, essayez d'isoler le fautif en
changeant le contenu du nom, par exemple :
Dossier = "C:UsersPropriétaireDocumentsConsultations" _
& StrConv(NomRep, vbProperCase)

puis :
Dossier = "C:UsersPropriétaireDocumentsConsultations" _
& StrConv(PrenomRep, vbProperCase) _

puis :
Dossier = "C:UsersPropriétaireDocumentsConsultations" _
& Format(DateNaisRep, "yyyymmdd")

En désespoir de cause, indiquez nous le contenu de la variable qui
coince.
Dans les préconisations précédentes, j'aurais du vous indiquer par
exemple :
Debug.print "Date:" Format(DateNaisRep, "yyyymmdd") & "'"
en mettant un caractère à la fin ça permet d'être certain d'avoir lu
tout le contenu.

--
A+

Avatar
Geo
Re

Voici ce que dit la doc DOS sur Mkdir :
If path$ includes an parent folder that does not exist, a run-time
Error 76 occurs ("Path not found").

En clair, si vous voulez créer le dossier c:xxxxyyyyy
et que le dossier c:xxxx n'existe aps, il faut d'abord créer
c:xxxx
puis
c:xxxxyyyyy
D'où une nouvelle hypothèse est qu'il y aurait un "/" ou un "" qui
traîne.

--
A+
Avatar
Jocelyne
Bonjour,

Avec vos conseils, j'ai finalement trouvé où se situe l'erreur.

La marque de paragraphe est incluse dans le signet PrenomRep ce qui
occasionne un caractère non accepté.

Dans la macro qui utilise la même procédure pour suggérer un nom de fichier
ne me donne pas d'erreur car j'utilise seulement les trois premiers
caractères du signe PrenomP et non le contenu entier.

J'apprends un peu à tous les jours. Je verrai donc à ne pas inclure la
marque de paragraphe dans les signets qui serviront à composer les noms de
dossiers et de fichiers.

Merci pour vos trucs de dépistage.

Jocelyne


Re

Voici ce que dit la doc DOS sur Mkdir :
If path$ includes an parent folder that does not exist, a run-time
Error 76 occurs ("Path not found").

En clair, si vous voulez créer le dossier c:xxxxyyyyy
et que le dossier c:xxxx n'existe aps, il faut d'abord créer
c:xxxx
puis
c:xxxxyyyyy
D'où une nouvelle hypothèse est qu'il y aurait un "/" ou un "" qui
traîne.

--
A+





Avatar
Geo
Bonjour

Merci pour le retour.
Vous pourriez une fonction qui regroupe le traitement des caractères
interdits ou à risque, comme cela votre macro sera moins fragile.

Exemple :
Function Convertir(A as string)
Dim T as string
T = A
'Supprimer les tabulations
T = Replace(T, vbTab, "", , , vbTextCompare)
'Supprimer les retours à la ligne
T = Replace(T, vbCr, "", , , vbTextCompare)
'Supprimer les fins de ligne
T = Replace(T, vbLf, "", , , vbTextCompare)
'Remplacer les / et
T = Replace(T, "/", "_", , , vbTextCompare)
T = Replace(T, "", "_", , , vbTextCompare)
' etc.
Convertir = T
end function

Pour l'utiliser :
Dossier = "C:UsersPropriétaireDocumentsConsultations" _
& Convertir(StrConv(NomRep, vbProperCase) _
& StrConv(PrenomRep, vbProperCase) _
& Format(DateNaisRep, "yyyymmdd"))

Pas testé tel quel.

--
A+
Avatar
Jocelyne
Super ça fonctionne très bien!

Je l'ai testée en remettant la marque de paragraphe dans le signet et j'ai
aussi créé des erreurs dans les autres signets. Lorsque je lance la macro
tout va à merveille; le dossier est créé sans embuche.

Il y en a des choses à apprendre! J'aimerais bien en être rendue à votre
niveau mais heureusement que vous êtes là pour nous aider nous qui en
connaissons peu.

Merci infiniment!
Jocelyne


Bonjour

Merci pour le retour.
Vous pourriez une fonction qui regroupe le traitement des caractères
interdits ou à risque, comme cela votre macro sera moins fragile.

Exemple :
Function Convertir(A as string)
Dim T as string
T = A
'Supprimer les tabulations
T = Replace(T, vbTab, "", , , vbTextCompare)
'Supprimer les retours à la ligne
T = Replace(T, vbCr, "", , , vbTextCompare)
'Supprimer les fins de ligne
T = Replace(T, vbLf, "", , , vbTextCompare)
'Remplacer les / et
T = Replace(T, "/", "_", , , vbTextCompare)
T = Replace(T, "", "_", , , vbTextCompare)
' etc.
Convertir = T
end function

Pour l'utiliser :
Dossier = "C:UsersPropriétaireDocumentsConsultations" _
& Convertir(StrConv(NomRep, vbProperCase) _
& StrConv(PrenomRep, vbProperCase) _
& Format(DateNaisRep, "yyyymmdd"))

Pas testé tel quel.

--
A+