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 :

Pb modification tableau suite choix ligne via combobox / textbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    technicien
    Inscrit en
    Juillet 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : technicien
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2016
    Messages : 51
    Par défaut Pb modification tableau suite choix ligne via combobox / textbox
    Bonjour a tous,

    Je souhaiterais modifier le contenu d'une ligne d'un tableau excel via une userform. Je bloque au niveau de la réécriture des données modifiées dans mon tableau structuré.
    Je m'explique j'arrive a récupérer (via combobox) le contenu de la ligne souhaitée et les dispatchées dans des textbox.
    La ou je bloque c'est pour venir réécrire ces données (modifiés dans mes textbox) en lieu et places des anciennes.

    Merci d'avance pour votre aide

    Le code utilisé :
    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
    Private Sub UserForm_Initialize()
    'Affiche dans la combobox le contenu du tableau adhérent
     
       With Me.ComboBox1
        .ColumnCount = 2: .ColumnWidths = "80;80" ' Affiche les colonnes B à C
        .ColumnHeads = True 'affiche entéte du tableau
        .RowSource = "TableauAdherents" 'Endroit ou sont les donnée
       End With
     
    End Sub
     
    'Copie les info de la combobox dans textbox
    Private Sub ComboBox1_Click()
    Me.TextBoxNom = Me.ComboBox1
    Me.TextBoxPrenom = Me.ComboBox1.Column(1)
    End Sub

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,

    Je ne suis pas sûre de comprendre exactement ce que tu veux.
    1ère interrogation : pourquoi passe-tu par une ComboBox pour alimenter tes TextBox ?
    2ème question : est-ce que les cellules que tu veux modifier dans ton classeur se situent toujours au même endroit ? En fait, la question sous-jacente est comment sait-on quelles sont les cellules qu'il faut remplacer ?
    Car une fois qu'on sait cela, c'est très simple :
    Pour t'aider : https://silkyroad.developpez.com/VBA...serForm/#LII-E

    Pour t'aider plus facilement, il serait bien que tu nous joignes une copie d'écran de ton UserForm et classeur expliquant ce que tu as et le résultat que tu aimerais obtenir.

  3. #3
    Membre confirmé
    Homme Profil pro
    technicien
    Inscrit en
    Juillet 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : technicien
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2016
    Messages : 51
    Par défaut
    Bonjour,

    La combobox me sert pour rechercher dans mon tableau la ligne à modifier.
    Une fois la ligne choisie (via la combobox) je viens remplir les textbox avec les données sélectionnées préalablement dans la combobox.
    Les cellules a modifier ne sont donc jamais au même endroit c'est ce qui me pose problème.
    Comment trouver la ligne choisie par la combobox pour que les textbox contenant les modifications aillent s'écrire sur cette même ligne.

    Merci d'avance

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Si j'ai bien compris, tu charges une base de données d'une feuille dans ta ComboBox. Ensuite tu cliques sur une entrée, tu l'as modifie et tu aimerais la modifier dans ta base de données Excel ?
    Est-ce qu'il y a une clef unique dans ta base de données ? Par exemple, s'il y a des noms, est-ce qu'ils sont uniques ?
    Le seul moyen de retrouver des entrées, c'est si elles sont uniques. Il faudra alors faire des recherches avec Application.Match par exemple.

    Je me permets de te redemander : pour t'aider plus facilement, il serait bien que tu nous joignes une copie d'écran de ton UserForm et classeur expliquant ce que tu as et le résultat que tu aimerais obtenir.

  5. #5
    Membre confirmé
    Homme Profil pro
    technicien
    Inscrit en
    Juillet 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : technicien
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2016
    Messages : 51
    Par défaut
    Bonjour,

    Peut être plus clair comme cela

    Etape 1 : je choisi dans ma combobox la ligne de mon tableau que je veux modifier
    Etape 2 : les différentes informations sont renvoyés vers les textbox pour être modifié
    Etape 3 (celle ou je bloque) : remettre a jour le tableau avec les informations modifiés

    Nom : Composition1.jpg
Affichages : 125
Taille : 288,6 Ko

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Il te faudra une clef dans ta BDD. Pourquoi ? Supposons qu'il y ait 2 personnes avec le même nom de famille, comment fais-tu pour les différencier ? Ou le même prénom etc ... ? Je partirai bien sur une clef NomPrénom, car dans ta ComboBox, tu fais apparaître Nom et Prénom. Il faudrait donc que tu créés une colonne NomPrénom.

    Exemple :
    Nom : Forum15.PNG
Affichages : 125
Taille : 13,1 Ko

    Mon UserForm pour l'exemple :
    Nom : Forum16.PNG
Affichages : 115
Taille : 10,0 Ko

    Mon code pour l'exemple :
    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
    'Je mets ces variables en dehors des Sub pour pouvoir les utiliser dans plusieurs Sub.
    Dim nom As String
    Dim prenom As String
     
    'Pour l'initialisation, rien de nouveau, j'ai repris ton code
    Private Sub UserForm_Initialize()
        With Me.ComboBox1
        .ColumnCount = 2
        .ColumnWidths = "80;80" ' Affiche les colonnes B à C
        .ColumnHeads = True 'affiche entéte du tableau
        .RowSource = "Feuil1!B2:C6" 'Endroit ou sont les donnée
       End With
       Label2.Caption = "- - -"
    End Sub
     
     
    'Quand je sélectionne une valeur dans la combobox, je veux récupérer le Nom Prénom de la personne que j'ai sélectionné et je veux compléter la Textbox avec l'âge de la personne
    Private Sub ComboBox1_Change()
     
        nom = ComboBox1.List(ComboBox1.ListIndex, 0)        'me permet de récupérer la valeur sélectionnée de la 1ère colonne (colonne n°0) de la combobox => soit dans mon exemple le nom de la personne sélectionnée
        prenom = ComboBox1.List(ComboBox1.ListIndex, 1)      'me permet de récupérer la valeur sélectionnée de la 2ème colonne (colonne n°1) de la combobox => soit dans mon exemple le prénom de la personne sélectionnée
     
        TextBox1 = Application.VLookup(nom & prenom, Sheets("Feuil1").Range("A1:D6"), 4, 0)    'je fais un RECHERCHEV dans le tableau source à partir de la clef = NomPrénom pour retrouver l'âge de la personne
        Label2.Caption = nom & " " & prenom 'pas utile (c'était pour moi)
     
    End Sub
     
    'Quand je clique sur "Modifier", je veux modifier l'âge de la personne sur la BDD sur la feuille Excel
    Private Sub CommandButton1_Click()
        Dim ligne As Integer
     
        ligne = Application.Match(nom & prenom, Sheets("Feuil1").Range("A:A"), 0)    'Je cherche la ligne sur laquelle est la personne sélectionnée, grâce à la clef NomPrénom
        Sheets("Feuil1").Range("D" & ligne) = TextBox1     'Je modifie l'âge de la personne sélectionnée : cet âge est écrit en colonne D ligne "ligne".
    End Sub
    Petite remarque en aparté : ce type de chose (créer une base de données avec un formulaire de saisie/ modification) est beaucoup plus simple à faire sur Access, car c'est la fonctionnalité "de base" d'Access. Donc si tu peux le faire sur Access, ce serait mieux

Discussions similaires

  1. [Toutes versions] Insertion de ligne decalage de choix de liste combobox
    Par exelan dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 19/01/2018, 20h18
  2. Réponses: 2
    Dernier message: 25/09/2017, 03h19
  3. Réponses: 11
    Dernier message: 12/12/2014, 20h10
  4. [XL-2007] Modification ligne via formulaire
    Par rsane dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/09/2014, 20h49
  5. Réponses: 5
    Dernier message: 12/04/2011, 15h42

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