XL 2019 Modifier données déjà saisies via userform

AIXELS

XLDnaute Occasionnel
Bonjour à tous les Amis du Forum. :)
Je reviens vers vous une fois de plus.
J'ai réussi à créer un userform de saisie de données.
J'ai fait des recherches et j'ai adapté les codes que j'ai trouvés.
Le résultat est satisfaisant, mais peut-être pas académique pour les initiés.
J'aurais aimé en gardant le même masque pouvoir modifier
les données déjà saisies.
Pourriez-vous me mettre sur la piste.
Par avance merci pour votre aide.
Bien cordialement.
 

Pièces jointes

  • BDD_CLIENTS.xlsm
    71.5 KB · Affichages: 15

JM27

XLDnaute Barbatruc
bonjour je l'ai ai laissé en minuscules car pour moi , on ne doit pas les mettre en majuscule
exemple
35 rue Tartempion de l'impasse des Bleuets
a toi de me dire , car on peut le faire
pour moi le I ne doit pas être en majuscule
 

Dranreb

XLDnaute Barbatruc
Bonjour.
J'avais aussi été gêné par ce début de qualificateur de rue en majuscule et j'ai donc également modifié ma version de la fonction. Mais j'estime que ça doit être traitée à part, seulement en position 2 et si le 1er terme de l'adresse commence par un chiffre.
VB:
Sub Test()
   ActiveSheet.[A1].Value = NomPropre2("2 Voie De l'ALSTOM") _
      & vbLf & NomPropre2("13 avenue denfert-rochereau") _
      & vbLf & NomPropre2("26 rue de la cinquième avenue") _
      & vbLf & NomPropre2("rue d'agadir")
   End Sub
Résultat en A1 :
2 voie de l'ALSTOM
13 avenue Denfert-Rochereau
26 rue de la Cinquième Avenue
Rue d'Agadir
Ma version actuelle de la fonction est celle ci :
VB:
Function NomPropre2(ByVal Nom As String) As String
   Dim TJn() As String, N As Integer, Orig As String, Maju As String, Minu As String, Exclu
   TJn = Split(Replace(Replace(Nom, "'", "' "), "-", "- "), " ")
   For N = 0 To UBound(TJn)
      Orig = TJn(N): Maju = UCase(Orig): Minu = LCase(Orig)
      If Len(Orig) < 2 Or Orig <> Maju Then
         For Each Exclu In Array("à", "au", "bis", "d'", "de", "des", "du", _
            "en", "et", "l'", "le", "la", "les", "ter", "sur")
            If Exclu = Minu Then Exit For
            Next Exclu
         If IsEmpty(Exclu) Then Mid$(Minu, 1, 1) = Left$(Maju, 1)
         TJn(N) = Minu: End If
      Next N
   If TJn(0) Like "#*" Then
      Orig = TJn(1): Maju = UCase(Orig): Minu = LCase(Orig)
      If Len(Orig) < 2 Or Orig <> Maju Then
         For Each Exclu In Array("avenue", "boulevard", "chemin", "place", "rue", "sentier", "square", "voie")
            If Exclu = Minu Then Exit For
            Next Exclu
         If IsEmpty(Exclu) Then Mid$(Minu, 1, 1) = Left$(Maju, 1)
         TJn(1) = Minu: End If
      End If
   NomPropre2 = Replace(Replace(Join(TJn, " "), "- ", "-"), "' ", "'")
   End Function
 
Dernière édition:

AIXELS

XLDnaute Occasionnel
Bonjour.
J'avais aussi été gêné par ce début de qualificateur de rue en majuscule et j'ai donc également modifié ma version de la fonction. Mais j'estime que ça doit être traitée à part, seulement en position 2 et si le 1er terme de l'adresse commence par un chiffre.
VB:
Sub Test()
   ActiveSheet.[A1].Value = NomPropre2("2 Voie De l'ALSTOM") _
      & vbLf & NomPropre2("13 avenue denfert-rochereau") _
      & vbLf & NomPropre2("26 rue de la cinquième avenue") _
      & vbLf & NomPropre2("rue d'agadir")
   End Sub
Résultat en A1 :
Ma version actuelle de la fonction est celle ci :
VB:
Function NomPropre2(ByVal Nom As String) As String
   Dim TJn() As String, N As Integer, Orig As String, Maju As String, Minu As String, Exclu
   TJn = Split(Replace(Replace(Nom, "'", "' "), "-", "- "), " ")
   For N = 0 To UBound(TJn)
      Orig = TJn(N): Maju = UCase(Orig): Minu = LCase(Orig)
      If Len(Orig) < 2 Or Orig <> Maju Then
         For Each Exclu In Array("à", "au", "bis", "d'", "de", "des", "du", _
            "en", "et", "l'", "le", "la", "les", "ter", "sur")
            If Exclu = Minu Then Exit For
            Next Exclu
         If IsEmpty(Exclu) Then Mid$(Minu, 1, 1) = Left$(Maju, 1)
         TJn(N) = Minu: End If
      Next N
   If TJn(0) Like "#*" Then
      Orig = TJn(1): Maju = UCase(Orig): Minu = LCase(Orig)
      If Len(Orig) < 2 Or Orig <> Maju Then
         For Each Exclu In Array("avenue", "boulevard", "chemin", "place", "rue", "sentier", "square", "voie")
            If Exclu = Minu Then Exit For
            Next Exclu
         If IsEmpty(Exclu) Then Mid$(Minu, 1, 1) = Left$(Maju, 1)
         TJn(1) = Minu: End If
      End If
   NomPropre2 = Replace(Replace(Join(TJn, " "), "- ", "-"), "' ", "'")
   End Function
Merci @Dranreb pour ton retour, ça fonctionne très bien.
 

AIXELS

XLDnaute Occasionnel
@JM27 ta modification fonctionne aussi.
Mais j'ai un message d'erreur suite à la conversion
de la base "CLIENTS" en tableau pour créer les entêtes des adresses
de facturation via une liste de validation.
Je ne change que le nom
et tout le reste de l'adresse est reportée en automatique.
Tout le process création, modification suppression d'un
client se déroule bien, jusqu'au tri et là j'e t'envoie le message.
Merci pour ton aide.
 

Pièces jointes

  • Message d'erreur tri.jpg
    Message d'erreur tri.jpg
    18.9 KB · Affichages: 16
  • Message d'erreur.jpg
    Message d'erreur.jpg
    31.5 KB · Affichages: 15
  • BDD_CLIENTS avec function (1).xlsm
    81.3 KB · Affichages: 4
Dernière édition:

JM27

XLDnaute Barbatruc
postes ton fichier, je ne vois pas d'erreur pour l'instant
Edit : j'ai lu en diagonale ta question : pas de tableau dans mon appli , tu auras des pB
Pourquoi je n'utilises pas les tableaux : certains n'ont pas cette fonctionnalité EXCEL 2003 par exemple
 
Dernière édition:

AIXELS

XLDnaute Occasionnel
postes ton fichier, je ne vois pas d'erreur pour l'instant
Edit : j'ai lu en diagonale ta question : pas de tableau dans mon appli , tu auras des pB
Pourquoi je n'utilises pas les tableaux : certains n'ont pas cette fonctionnalité EXCEL 2003 par exemple
Je te l'ai posté sur mon dernier message avec les images écrans.
Faire un ajout, une modification ou suppression en validant tout se passe bien
jusqu'au tri. Voir message d'erreur en image écran.
 

Pièces jointes

  • BDD_CLIENTS avec function (1) (1).xlsm
    81.3 KB · Affichages: 3

jcf6464

XLDnaute Occasionnel
Bonjour JM27, AIXELS et le forum

Si tu veut mettre les clients en tableau pour excel après 2003 voir la suite

autrement comme dis JM27 sans tableau comme il à fait reste sans tableau ...,

Si la personne qui utilise le classeur est en 2003 il ne pourra pas

-*****************
dans un module

VB:
Sub TriClients()
    [TClients].Sort Key1:=[TClients[NOM]], Header:=xlYes, Order1:=xlAscending

End Sub
A la fin de suppression et au dessus de ( With Sheets("CLIENTS") rajouter TriClients et mettre en commentaire ( ' )le reste
Code:
TriClients

   ' With Sheets("CLIENTS")
   ' If .Range("A3") <> "" Then
    '    .Range("A2:J10000").Sort Key1:=.Range("A2"), Order1:=xlAscending, Header:=xlNo
   ' End If
   ' End With
Bonne continuation jcf
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 976
Membres
103 076
dernier inscrit
LoneWolf90