IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Création d'un formulaire de saisie pour fichier contact


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Assistante direction
    Inscrit en
    Septembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Assistante direction

    Informations forums :
    Inscription : Septembre 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Création d'un formulaire de saisie pour fichier contact
    Bonjour,
    Je dois créer un fichier de gestion de contacts. Pour cela il est nécessaire de créer un formulaire personnalisé de saisie des données. Dans ce formulaire on doit pouvoir :
    Créer un contact
    Modifier un contact existant (en passant par une recherche préalable)
    Imprimer le formulaire
    Je n’ai jamais fait de VBA, j’ai utilisé et créer des bases de donnée dans filmemaker il y a plusieurs années et là mes bidouilles issues de tuto et forum bloquent. J’ai fait de nombreuses tentatives mais rien ne fonctionnent correctement de manière stable.
    J’ai créé un fichier avec les données suivantes. J’y est laissé ce qui me semble indispensable en code VBA.

    • Col A Civilité ComboBox2 avec liste déroulante VIDE / MADAME / MONSIEUR
    • Col B Nom TextBox1
    • Col C Prénom TextBox2
    • Col D Adresse TextBox3
    • Col E Code Postal TextBox4
    • Col F Ville TextBox5
    • Col G Téléphone TextBox6
    • Col H Mail TextBox7
    • Col I Programme TextBox8
    • Col J Typologie TextBox9
    • Col K Type d’Acquisition TextBox10
    • Col L Origine contact Combobox3 avec liste déroulante Site / Téléphone / Passage spontané"
    • Col M Remarques TextBox11
    • Col N Transmis Combobox4 avec liste déroulante KD/NF/AG
    • Col O Date de création TextBox12


    Sur mon formulaire il y a en plus une ComboBox1 qui devrait servir de zone de recherche.
    Actuellement la macro pour ouvrir le formulaire, le bouton quitter et le bouton imprimer marchent.
    Par contre
    • Quand je saisie un contact je n’arrive pas à l’insérer dans la feuille excell de données (onglet « Client »)
    • Les listes déroulantes ne marchent pas
    • Je ne vois pas comment programmer la zone de recherche (combo1)

    Je sais que cela fait beaucoup de sujets, mais si je pouvais avoir des pistes cela me dépannerait grandement !

    Merci d’avoir pris le temps de me lire
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 948
    Points : 5 174
    Points
    5 174
    Par défaut
    bonsoir
    ajouter une feuille te servira comme base nommée par exemple "Base"
    En A mettre le titre "Civilité"
    en A2 : célibataire
    en A3 : marié
    et ainsi de suite
    et lors de l'initialisation de ton userform et pour remplir la combobox 2 tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub UserForm_Initialize()
    Dim i As Integer
    For i = 2 To Sheets("Base").Range("A65536").End(xlUp).Row
      ComboBox2 = Sheets("Base").Range("A" & i)
      If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem Sheets("Base").Range("A" & i)
    Next i
    End Sub
    pour envoyer les données de textbox1 vers la colonne A10 par exemple*
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    with sheets ("client")
    .range("A10")= textbox1.value
    y a bq de discussion dans ce genre et qui cherche trouve
    bonne nuit à toutes et à tous

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Assistante direction
    Inscrit en
    Septembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Assistante direction

    Informations forums :
    Inscription : Septembre 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut test négatif
    J'ai essayé les modifications, mais je n'y arrive pas, je n'ai pas du mettre les segments aux bons endroits. Voilà ce que donne le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Option Explicit
    Dim Ws As Worksheet
     
     
    'Pour le formulaire
    Private Sub UserForm1_Initialize()
        Dim J As Long
        Dim i As Integer
    For i = 2 To Sheets("Base").Range("A65536").End(xlUp).Row
      ComboBox2 = Sheets("Base").Range("A" & i)
      If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem Sheets("Base").Range("A" & i)
    Next i
     
    End Sub
     
    'Pour le bouton Nouveau contact
    Private Sub CommandButton1_Click()
        Dim L As Integer
        If MsgBox("Confirmez-vous l'insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
            L = Sheets("Clients").Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
            With Sheets("Clients")
            Range("A" & L) = ComboBox2.Value
            Range("B" & L) = TextBox1.Value
            Range("C" & L) = TextBox2.Value
            Range("D" & L) = TextBox3.Value
            Range("E" & L) = TextBox4.Value
            Range("F" & L) = TextBox5.Value
            Range("G" & L) = TextBox6.Value
            Range("H" & L) = TextBox7.Value
            Range("I" & L) = TextBox8.Value
            Range("J" & L) = TextBox9.Value
            Range("K" & L) = TextBox10.Value
            Range("L" & L) = ComboBox3.Value
            Range("M" & L) = TextBox11.Value
            Range("N" & L) = ComboBox4.Value
            Range("O" & L) = TextBox12.Value
        End With
        End If
    End Sub
    J'ai changé l'ensemble des lignes d'insertion selon le modèle...

  4. #4
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 816
    Points : 2 954
    Points
    2 954
    Billets dans le blog
    10
    Par défaut
    Salut,
    Pourquoi un UserForm ou tout autre style de formulaire?
    Une simple feuille Excel à compléter suffit amplement. Pour les modifications, il suffit de se servir du raccourci Ctrl+f pour rechercher...
    Par expérience, j'ai ce type de fichier que j'utilise quotidiennement. Avec un userform, pas trop mal codé dans le sens ou il est efficace.
    Et bien, je ne me sers plus de ce "formulaire" et modifie mes feuilles manuellement.
    Tu n'as pas 57 colonnes de données à modifier tous les jours. Tu n'as pas 300 saisies de nouveaux contacts quotidiens.
    Si c'est le cas, je m'incline et t'oriente vers un UserForm (quoique tout est relatif). Sinon, ne t'embête pas avec ça.
    Bonne soirée
    A++

    Ps : surtout que, si tu ne t'y connais pas suffisamment en VBA, et que tu as des modifications à apporter, de la maintenance de code, tu vas galérer en plaçant des emplatres sir les jambes de bois bancales de ton code...
    Parfois, il faut savoir se.contenter de ce qui fonctionne et à fait ses preuves...
    Bises

  5. #5
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 948
    Points : 5 174
    Points
    5 174
    Par défaut
    test négatif
    Fichiers attachés Fichiers attachés

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    Assistante direction
    Inscrit en
    Septembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Assistante direction

    Informations forums :
    Inscription : Septembre 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par BENNASR Voir le message
    Bonjour,
    je suis désolée, je n'ai pas pu me connecter au forum avant aujourd'hui.
    Merci d'avoir pris le temps de me répondre. Je sais qu'effectivement je n'ai pas 50 colonnes et que un la forme tableur d'excel pourrait être utilisée, mais au quotidien, nous avons besoin des impression ou en tout cas d'une fiche format PDF qui soit plus lisible.

    Je vais continuer peaufiner ma base.

    Encore merci !

  7. #7
    Nouveau Candidat au Club
    Femme Profil pro
    Assistante direction
    Inscrit en
    Septembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Assistante direction

    Informations forums :
    Inscription : Septembre 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Encore perfectionner mon fichier
    Bonjour,

    j'ai bien avancé sur mon fichier (insertion des fiches, listes déroulantes, problème de format de date à l'exportation dans le tableur...). Il me manque une dernière fonctionnalité : la recherche et l'affichage d'un contact existant pour modification.

    J'ai longuement cherché des infos sur le forum. J'ai trouvé un fichier exemple qui correspond parfaitement à mes attentes, mais je n'arrive pas à transposer le code pour l'intégrer à mon fichier. Il s'agit de la solution de boisgontierjacques dans le post suivant :
    https://www.developpez.net/forums/d1...che-intuitive/

    J'ai essayé de modifier le code pour le rendre compatible avec mon fichier, mais je n'arrive pas à l'intégrer sans créer des erreurs. Quelqu'un peut-il me donner des pistes ?

    Le code modifié est le suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    Option Compare Text
    Dim f, ligneEnreg, Tblclé(), tblCLIENTS()
     
    Private Sub UserForm_Initialize()
      Set f = Sheets("CLIENTS")
      Tblclé = Range("A2:B" & [A65000].End(xlUp).Row).Value     ' Nom+Prénom
      tblCLIENTS = Range("A2:G" & [A65000].End(xlUp).Row).Value      ' CLIENTS
      Call Tri(Tblclé, LBound(Tblclé), UBound(Tblclé))
      Me.ComboBox1.List = Tblclé
    End Sub
     
    Private Sub ComboBox1_click()
     'on récupère tous les champs
     For i = 1 To UBound(Tblclé)
      If tblCLIENTS(i, 1) = ComboBox1.Column(0) And tblCLIENTS(i, 2) = ComboBox1.Column(1) Then
        ligneEnreg = i
            Me.Controls("ComboBox2") = tblCLIENTS(ligneEnreg, 1)
            For k = 1 To 9
            Me.Controls("TextBox" & k) = tblCLIENTS(ligneEnreg, k + 1)
            Me.Controls("ComboBox5") = tblCLIENTS(ligneEnreg, 11)
            Me.Controls("ComboBox3") = tblCLIENTS(ligneEnreg, 12)
            Me.Controls("TextBox11") = tblCLIENTS(ligneEnreg, 13)
            Me.Controls("ComboBox4") = tblCLIENTS(ligneEnreg, 14)
            Me.Controls("TextBox12") = tblCLIENTS(ligneEnreg, 15)
     
       End If
      Next i
    End Sub
     
    Sub Tri(a(), gauc, droi)  ' Quick sort
      ref = a((gauc + droi) \ 2, 1) & a((gauc + droi) \ 2, 2)
      g = gauc: d = droi
      Do
        Do While a(g, 1) & a(g, 2) < ref: g = g + 1: Loop
        Do While ref < a(d, 1) & a(d, 2): d = d - 1: Loop
        If g <= d Then
           For k = LBound(a, 2) To UBound(a, 2)
             temp = a(g, k): a(g, k) = a(d, k): a(d, k) = temp
           Next k
           g = g + 1: d = d - 1
        End If
      Loop While g <= d
      If g < droi Then Call Tri(a, g, droi)
      If gauc < d Then Call Tri(a, gauc, d)
    End Sub
    Fichiers attachés Fichiers attachés

  8. #8
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 948
    Points : 5 174
    Points
    5 174
    Par défaut
    bonsoir
    c'est l'heure de partir
    mais avant je propose cette exemple
    reste à compléter comment envoyer les données à nv vers la feuille excel

    clique sur le bouton modifier et on continuera demain
    bonne soirée
    Fichiers attachés Fichiers attachés

  9. #9
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Si je peux me permettre.
    Sans prétention de ma part, je l'ai mentionné maintes fois: bien nommer ses contrôles peut s'avérer utile voire fondamental
    Ceci sur la base de 2 règles:
    Préfixer les noms par un label indiquant sa nature, suivi d'un "_"
    Choisir des noms évocateurs

    Exemple Cbx_Membres, Txt_adresse_1

    Cette discipline peut rendre le code plus clair mais aussi être utile à plusieurs actions.
    Notamment en bouclant sur les contrôles pour informer des cellules nommées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim ctrl as Variant
    For Each ctrl in Array("adresse1", "adresse2")
          Worksheets("lafeuille").Range(ctrl).Value = Me.Controls("Txt_" & ctrl).Value
    Next ctrl
    2 tutoriels
    UserForm/
    Les contrôles dans Userform

  10. #10
    Nouveau Candidat au Club
    Femme Profil pro
    Assistante direction
    Inscrit en
    Septembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Assistante direction

    Informations forums :
    Inscription : Septembre 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut C'est un bon début !
    Effectivement comme cela ça marche en créant un bouton rechercher.
    Il y a deux inconvénients :
    La liste de recherche n'est pas triée par ordre alphabétique
    Je ne sais pas comment gérer les doublons (il y a vite plusieurs Monsieur Martin...)

    Pour les intitulés, je vais revoir l'ensemble des noms et modifier la programmation en conséquence. Pour l'instant j'ai une feuille papier avec toutes les correspondances, mais effectivement cela rendra tout plus simple !

    En tout cas merci d'avoir pris du temps pour moi !

  11. #11
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 948
    Points : 5 174
    Points
    5 174
    Par défaut
    Bonsoir
    Pense à une combobox ou vous concaténez le nom et le prenom ds une seule combo lors de recherche

Discussions similaires

  1. Réponses: 17
    Dernier message: 23/06/2015, 21h27
  2. [AC-2007] Création d'un formulaire de saisie
    Par petitpom dans le forum IHM
    Réponses: 2
    Dernier message: 27/06/2012, 13h57
  3. [AC-2003] Formulaire de saisie pour alimenter deux tables
    Par Papounet4478 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 19/01/2012, 13h55
  4. Réponses: 0
    Dernier message: 07/04/2008, 17h56
  5. Réponses: 1
    Dernier message: 30/04/2007, 22h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo