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 :

formulaire avec moteur de recherche


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Utilisateur excel
    Inscrit en
    Mai 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Utilisateur excel

    Informations forums :
    Inscription : Mai 2018
    Messages : 10
    Points : 4
    Points
    4
    Par défaut formulaire avec moteur de recherche
    Bonsoir a vous,
    Après de nombreuses recherches et temps sur internet et sur l'ordi, j'ai avancé sur mon fichier.
    Ou je bloque :
    Quand je lance mon fichier a partir de mon bouton en fuil1, la validation des données n'enregistre rien. Quand je le lance du developpeur la saisie est enregistrée.....
    Je bloque sur la possibilité de faire apparaite sur 3 lignes ma saisie des choix d'instrument.
    Je suis en train de chercher pour faire un moteur de recherche me permettant d'effectuer une recherche sur l'ensemble des lettres d'un nom mais je verrais aprés.
    Merci de votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 134
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 134
    Points : 1 808
    Points
    1 808
    Par défaut
    Bonjour,
    Citation Envoyé par Elsouba Voir le message
    Quand je lance mon fichier a partir de mon bouton en fuil1, la validation des données n'enregistre rien. Quand je le lance du developpeur la saisie est enregistrée.....
    C'est normal car tu n'as pas choisis la feuille d'enregistrement et comme ceci cela fonctionnera correctement.
    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
     With Sheets("BDD")
         L = .Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
     
         .Range("A" & L).Value = TextBox1
         .Range("B" & L).Value = TextBox2
         .Range("C" & L).Value = TextBox3
         .Range("D" & L).Value = TextBox4
         .Range("E" & L).Value = TextBox5
         .Range("F" & L).Value = TextBox6
         .Range("G" & L).Value = TextBox7
         .Range("H" & L).Value = TextBox8
         .Range("I" & L).Value = CheckBox1
         .Range("J" & L).Value = TextBox9
         .Range("K" & L).Value = CheckBox2
         .Range("L" & L).Value = TextBox10
         .Range("M" & L).Value = CheckBox3
         .Range("N" & L).Value = TextBox11
     End With

  3. #3
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 904
    Points
    55 904
    Billets dans le blog
    131
    Par défaut
    Salut.

    Perso:
    • J'utiliserais un tableau structuré pour stocker mes données;
    • Je nommerais correctement mes contrôles.



    Nom : 2021-03-23_090105.png
Affichages : 732
Taille : 13,0 Ko

    Je pourrais alors utiliser les références structurées dans mon code au sein d'une procédure placée dans un module standard et appelée par le clic sur le bouton de validation du userform:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub SaveData()
      Dim i As Long
     
      i = Range("t_Contacts").ListObject.ListRows.Add().Index
      With usfContact
        Range("t_Contacts[Prénom]")(i).Value = .tboFirstname.Value
        Range("t_Contacts[Nom]")(i).Value = .tboLastname.Value
        Range("t_Contacts[Date Naissance]")(i).Value = CDate(.tboBirthdate.Value)
      End With
    End Sub

    Par rapport à Range("a65536").End(xlUp) et à la mise en concordance délicate des colonnes et des textbox, ca n'a que des avantages, car
    • je découple ainsi mon code de la plage du tableau dans mon classeur;
    • je n'impose pas qu'il y ait une donnée sur chaque ligne de la première colonne. Avec le code .End(xlUp), si ta dernière ligne de données n'est pas remplie en A, tu vas l'écraser par les données du userform. L'utilisation du tableau structuré évite ce problème;
    • je ne limite pas ma saisie à 65536 lignes (vieux code obsolète d'avant XL2007 => logique de programmation obsolète selon moi), même si je me doute que ce sera rare de saisir autant de lignes;
    • j'écris un code plus lisible car on voit de suite la relation entre la colonne et le contrôle puisque l'on utilise des noms parlants des deux côtés.




    Lorsqu'il y a autant de données à transférer, j'utilise une boucle sur une table de mappage pour m'éviter l'énumération de toutes les colonnes dans le code.

    Nom : 2021-03-23_100325.png
Affichages : 638
Taille : 68,9 Ko

    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
    Sub SaveData()
      Dim i As Long
      Dim j As Long: j = 1
      Dim Target As Range
     
      i = Range("t_Contacts").ListObject.ListRows.Add().Index
      With usfContact
        Do While j <= Range("t_Mappage").Rows.Count
          Set Target = Range("t_Contacts[" & Range("t_Mappage[Colonne]")(j).Value & "]")(i)
          Select Case Range("t_Mappage[Type]")(j).Value
            Case "T", "B"
              Target.Value = .Controls(Range("t_Mappage[Contrôle]")(j).Value).Value
            Case "N"
              Target.Value = .Controls(Range("t_Mappage[Contrôle]")(j).Value).Value * 1
            Case "D"
              Target.Value = CDate(.Controls(Range("t_Mappage[Contrôle]")(j).Value).Value)
          End Select
          j = j + 1
        Loop
      End With
    End Sub

    On peut ainsi tendre vers du code générique qui transfère les données de n'importe quel couple tableau/userform apparié, pour ne pas réinventer la roue à chaque fois.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Candidat au Club
    Homme Profil pro
    Utilisateur excel
    Inscrit en
    Mai 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Utilisateur excel

    Informations forums :
    Inscription : Mai 2018
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    Merci pour vos message

    @anasecu : merci effectivement ca fonctionne. Nickel
    @ Pierre Fauconnier : merci de ton détail, avec ton exemple, ce la voudrait-il dire que mon fichier BDD serait le tableau structuré qui pourrait se trouver en feuil2 et toujours avoir sur la feuil 1 un bouton pour lancer mon formulaire?

  5. #5
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 904
    Points
    55 904
    Billets dans le blog
    131
    Par défaut
    Oui. Il faut qu'il y ait un tableau structuré et dans ton classeur, ce serait effectivement sur la feuille 2, mais tu peux en fait le placer n'importe où, puisque dans le code que j'ai donné, on remarque qu'à aucun moment je ne parle de la place du tableau (sa feuille, la plage qui le recouvre, etc), car son nom suffit à pouvoir le manipuler. C'est LA raison pour laquelle il faut utiliser le tableau structuré en VBA plutôt que les vieilles méthodes avec End(xlUp) ou plages nommées avec DECALER qui sont devenues obsolètes.

    Quelques liens:
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Candidat au Club
    Homme Profil pro
    Utilisateur excel
    Inscrit en
    Mai 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Utilisateur excel

    Informations forums :
    Inscription : Mai 2018
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Ok, merci a toi.
    Je peux me permettre de revenir vers toi pour completer mon fichier?

  7. #7
    Candidat au Club
    Homme Profil pro
    Utilisateur excel
    Inscrit en
    Mai 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Utilisateur excel

    Informations forums :
    Inscription : Mai 2018
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Formulaire Excel et VBA
    Bonjour a tout le monde


    Je vais essayé d’etre plus clair dans ma saisie.
    Mon fichier a pour but de saisir des infos concernant des éléves pour differents instruments.
    en ouvrant mon fichier, je peux saisir, transferer et recherche des infos.
    Ce que je n’arrive pas a faire :

    dans la recherche, je voudrais saisir n’importe quelle lettre ou chiffre et faire apparaitre des résultats dans la liste deroulante (dans mon exemple, saisr bu pour me faire apparaitre Ducobu)
    si je saisie des infos concernant un instrument que toutes les infos avant les noms d’instruments soit identique et qu’une ligne se crée par rapport à l’instrument (j’ai fait un exemple dans la base de données.

    Merci de votre aide
    Fichiers attachés Fichiers attachés

  8. #8
    Membre averti
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Janvier 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 210
    Points : 336
    Points
    336
    Par défaut
    bonjour,

    un exemple de recherche mutli colonnes (ce n'est pas de moi, je n'ai pas noté la source désolé) qui doit répondre à ton besoin.

    Cordialement,


    Intuitif2colonnesCodeDescription.xls

  9. #9
    Candidat au Club
    Homme Profil pro
    Utilisateur excel
    Inscrit en
    Mai 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Utilisateur excel

    Informations forums :
    Inscription : Mai 2018
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Bonjour TOFatJOB,

    Merci de ton message.
    Pourrais-tu m'aider à l'inserer dans mon code?

    Merci à toi

  10. #10
    Candidat au Club
    Homme Profil pro
    Responsable médical
    Inscrit en
    Mars 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable médical
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2021
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Intéressant, serait il possible d'avoir un formulaire semblable avec un choix multiple?

  11. #11
    Membre averti
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Janvier 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 210
    Points : 336
    Points
    336
    Par défaut
    Bonjour,

    un exemple que j'ai trouvé sur le forum (je crois) qui doit vous aider à concrétiser votre développement.

    cordialement,

    RechercheMultiMotsMultiColonnes.xls

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/03/2021, 17h36
  2. Editeur WIN32API avec moteur de recherche interne et mise en page
    Par ProgElecT dans le forum Vos contributions VB6
    Réponses: 7
    Dernier message: 05/04/2008, 17h29
  3. [MySQL] petit soucis avec moteur de recherche
    Par php4life dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 31/01/2007, 16h18
  4. Pb avec moteur de recherche
    Par Elyric dans le forum ASP
    Réponses: 2
    Dernier message: 09/06/2005, 15h09
  5. problème avec moteur de recherche
    Par allyson dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 16/02/2005, 16h23

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