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 de saisie et de modification


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 19
    Par défaut Formulaire de saisie et de modification
    Bonjour à tous.

    Pour le travail, je me suis fait un formulaire (26 textbox et quelques combobox). Je l'ai fait a partir de tuto que j'ai trouvé ici et ailleurs sur le net, que j'ai ensuite adapté à mon projet.

    Il fonctionne bien, même si le code doit être un peu bordélique pour les connaisseurs.

    Je souhaite maintenant ajouter un champ de recherche (combox et/ou Textbox) pour faire "remonter" les informations dans le formulaire, afin d'y apporter des corrections ou saisir des infos dans des textbox et/ou combobox vide.

    Avant d'écrire ce post, j'ai bien sur chercher sur le net. J'ai trouvé plusieurs tuto que j'ai essayé d'adapter à mon formulaire, mais je bloque, je tourne en rond.

    Pour résumer. Je souhaite ajouté à mon formulaire, une fonction recherche pour pouvoir modifier/corriger et enregistrer (sur la même ligne) des données.

    D'avance merci pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Bonjour,

    bienvenue sur DVP

    26 textboxes dans un formulaire, ca commence à faire pas mal

    L'idée du coup pour toi, pour la partie recherche, c'est de permettre à l'utilisateur de spécifier un ou plusieurs critères ? Et de mettre à jour une liste de résultats ? Mais dans quel récipient stockes-tu ces résultats ?

    Concernant la mise à jour, faut-il envisager une mise à jour à la volée ou seulement lorsque tu valides les modifications ?

    Dis-nous en un peu plus stp
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 19
    Par défaut
    Bonjour.

    J'aimerai que la recherche s'effectue sur un ou deux critère, mais pas forcément "ensemble". Par exemple, si je fais une recherche par le nom, je peux avoir un doublon, dans ce cas là, je cherche avec son identifiant (info que je n'ai pas forcément, c'est pour ça, que je prend le nom également).

    Ma saisie va directement dans une feuille, le formulaire "trouve" la première ligne vide et complète avec ma saisie.

    En fait, j'aimerai juste rajouter à mon formulaire 2 champs de recherche (nom et identifiant), les données que j'ai saisie (qui se trouve dans ma feuille) auparavant "remonte" toutes seules à leurs places dans le formulaire (dans la bonne textbox et combobox). J'y apporte une correction ou un ajout de donnée et je valide un bouton (qui me confirme le remplacement des anciennes données par les nouvelles).

    Merci pour ton aide.

  4. #4
    Membre chevronné
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Par défaut
    Bonjour,


    il y a plusieurs solutions dans ce cas:

    faire un find à la sortie du textbox et récupérer les valeurs dans les autres textbox pour la ligne trouvée.

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Range("A1:A2000").NumberFormat = "0"
    Set C = Worksheets("nomdelafeuille").Range("A1:A2000").Find(TextBox1.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
        'Remise du séparateur de milliers
        'Range("A1:A2000").NumberFormat = "#,##0"
     
        ' Si la valeur est trouvée dans la liste
        If Not C Is Nothing Then
            n = C.Row
    UserForm1.TextBox1.Value = Worksheets("nomdelafeuille").Cells(n, N°colonneayantlavaleurarécupérer).Value
    UserForm1.TextBox2.Value = Worksheets("nomdelafeuille").Cells(n, N°colonneayantlavaleurarécupérer).Value
    UserForm1.TextBox3.Value = Worksheets("nomdelafeuille").Cells(n, 3).Value
    UserForm1.TextBox4.Value = Worksheets("nomdelafeuille").Cells(n, 4).Value




    ou bien faire une listview

  5. #5
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 19
    Par défaut
    Bonjour.

    Merci pour votre aide.

    Je met mon formulaire en pièce jointe, je ne suis pas sur que ma demande soit clair.

    Pour le moment, j'avance bien.

    Tout fonctionne sauf :

    Les 2 champs de recherche (recherche par nom et recherche par identifiant) sur le premier onglet,
    Le bouton modifier (pour enregistrer les modif).

    Encore merci.

    PS : Je sais "mon code", c'est le bordel


    Formulaire Saisie.xls

  6. #6
    Membre chevronné
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Par défaut
    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
    ' voici un test qui permet de valider la modification des données.
    X = MsgBox("Confirmez-vous la modification des données ?", vbYesNo, "Modification données")
        If X = vbYes Then
    Set C = Worksheets("nomdelafeuille").Range("A1:A2000").Find(TextBox1.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) ' définir une chose à rechercher (en l'occurence la recherche se porte sur la valeur de la textbox1 dans ce cas a adapter) si il y a un n° de client unique apr exemple alors porter la recherche sur ce n°
        'Remise du séparateur de milliers
        Range("A1:A2000").NumberFormat = "#,##0"
     
        ' Si la valeur est trouvée dans la liste
        If Not C Is Nothing Then
            n = C.Row (n prendra pour valeur le n° de la ligne ou la valeur de la textbox 1 a été trouvée)
     
    Worksheets("nomdelafeuille").Cells(n, colonneaadapter).Value = Userform1.Textbox1.value
     ' ex: Worksheets("test").Cells(n, 2).Value = Userform1.Textbox2.value  ici les valeurs contenues dans la textbox2 seront ajoutés à la feuille test en cellule ligne n (variable) et   colonne 2 (colonne B)
    ' ex: Worksheets("nomdelafeuille").Cells(n,3).Value = Userform1.Textbox3.value
    ' ex: Worksheets("nomdelafeuille").Cells(n, 4).Value = Userform1.Textbox4.value
     
    ' de la même manière on peut récuperer les données qui sont dans la feuillle pour les mettre dans les textbox :
    Userform1.Textbox4.value = Worksheets("nomdelafeuille").Cells(1, 2).Value ' la valeur de la textbox4 sera la même que la valeur de la cellule B1
    et cette procédure est a mettre lorsque l'on clique sur le bouton de command modifier par exemple en mettant le code dans:

    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
    Private Sub CommandButton1_Click()
    ' la procédure ensuite:
     
    X = MsgBox("Confirmez-vous la modification des données ?", vbYesNo, "Modification données")
        If X = vbYes Then
    Set C = Worksheets("nomdelafeuille").Range("A1:A2000").Find(TextBox1.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) ' définir une chose à rechercher (en l'occurence la recherche se porte sur la valeur de la textbox1 dans ce cas a adapter) si il y a un n° de client unique apr exemple alors porter la recherche sur ce n°
        'Remise du séparateur de milliers
        Range("A1:A2000").NumberFormat = "#,##0"
     
        ' Si la valeur est trouvée dans la liste
        If Not C Is Nothing Then
            n = C.Row (n prendra pour valeur le n° de la ligne ou la valeur de la textbox 1 a été trouvée)
     
    Worksheets("nomdelafeuille").Cells(n, colonneaadapter).Value = Userform1.Textbox1.value
     ' ex: Worksheets("test").Cells(n, 2).Value = Userform1.Textbox2.value  ici les valeurs contenues dans la textbox2 seront ajoutés à la feuille test en cellule ligne n (variable) et   colonne 2 (colonne B)
    ' ex: Worksheets("nomdelafeuille").Cells(n,3).Value = Userform1.Textbox3.value
    ' ex: Worksheets("nomdelafeuille").Cells(n, 4).Value = Userform1.Textbox4.value
    End If
    End If
     
     
    End Sub
    Est ce que cela peut vous aider à adapter le code? ou faut il encore plus d'explications?

Discussions similaires

  1. modifications formulaire aprés saisie
    Par antoine1504 dans le forum IHM
    Réponses: 8
    Dernier message: 22/08/2008, 13h30
  2. Réponses: 4
    Dernier message: 09/02/2006, 08h36
  3. faire un formulaire de saisie
    Par navona dans le forum IHM
    Réponses: 10
    Dernier message: 07/12/2005, 14h12
  4. Réponses: 3
    Dernier message: 28/11/2005, 15h04
  5. Réponses: 3
    Dernier message: 24/02/2005, 15h48

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