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 :

Remplir plusieurs textbox en même temps avec le contenu d'un contact dans une Bd [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2015
    Messages : 26
    Points : 19
    Points
    19
    Par défaut Remplir plusieurs textbox en même temps avec le contenu d'un contact dans une Bd
    Bonjour à tous,
    Je parvient à renseigner la textBox1 de mon userform2 avec le contenu d'une cellule de ma Bd de contacts, avec un click sur celle-ci en utilisant ce code (placé dans ma feuille1) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
        UserForm2.TextBox1.Text = ActiveCell.Value
     
    End Sub
    J'ai maintenant besoin de renseigner les autres textBox de mon userform2 avec les coordonnées du contact en question (nom, prénom etc..) étant entendu que textBox1 correspond au numéro d'ordre du contact (en l’occurrence son numéro de sécu).
    Évidemment, les coordonnées du contact se trouvent sur la même ligne (mais sur x colonnes).
    Mon problème est là car tout ce que j'ai tenté ne marche pas et voici le dernier code essayé (placé lui dans le userform2) :
    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
    Private Sub UserForm_Click()
     
          If TextBox1.Value = "" Then 'SI pas de "nom" ...
            Label_Nom.ForeColor = RGB(255, 0, 0) 'Label "nom" en rouge
        ElseIf TextBox2.Value = "" Then
            TextBox2.Value = ActiveCell.Value.Offset(0, 2).Value
        ElseIf TextBox3.Value = "" Then
            TextBox3.Value = ActiveCell.Value.Offset(0, 3).Value
        ElseIf TextBox4.Value = "" Then
            TextBox4.Value = ActiveCell.Value.Offset(0, 4).Value
        ElseIf TextBox5.Value = "" Then
            TextBox5.Value = ActiveCell.Value.Offset(0, 5).Value
        ElseIf TextBox6.Value = "" Then
            TextBox6.Value = ActiveCell.Value.Offset(0, 6).Value
        ElseIf TextBox7.Value = "" Then
            TextBox7.Value = ActiveCell.Value.Offset(0, 7).Value
        ElseIf TextBox8.Value = "" Then
            TextBox8.Value = ActiveCell.Value.Offset(0, 8).Value
        ElseIf TextBox9.Value = "" Then
            TextBox9.Value = ActiveCell.Value.Offset(0, 9).Value
        ElseIf TextBox10.Value = "" Then
            TextBox10.Value = ActiveCell.Value.Offset(0, 10).Value
     
        End If
     
    End Sub
    Je m'arrache les cheveux et, si vous avez une idée, ce dont je ne doute nullement, j'en veut bien.

  2. #2
    Membre averti
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Points : 442
    Points
    442
    Par défaut
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     TextBox2.Value = ActiveCell.Value.Offset(0, 2).Value
    Je m'arrache les cheveux et, si vous avez une idée, ce dont je ne doute nullement, j'en veut bien.
    Bonjour,

    le texte est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox2.Value = ActiveCell.Offset(0, 2).Value
    C'est offset de la cellule!!

    Il faut que le userform soit non modal pour pouvoir cliquer dans la feuille, et cliquer sur le formulaire ensuite...

    a+

    geogeo70

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    as tu essayé de clicker sur le UserForm vue que tu utilise la méthode Private Sub UserForm_Click()

    si non d'accord avec geogeo70!

    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
    Private Sub UserForm_Initialize()
          If TextBox1.Value = "" Then 'SI pas de "nom" ...
            Label_Nom.ForeColor = RGB(255, 0, 0) 'Label "nom" en rouge
        ElseIf TextBox2.Value = "" Then
            TextBox2.Value = ActiveCell.Offset(0, 2).Value
        ElseIf TextBox3.Value = "" Then
            TextBox3.Value = ActiveCell.Offset(0, 3).Value
        ElseIf TextBox4.Value = "" Then
            TextBox4.Value = ActiveCell.Offset(0, 4).Value
        ElseIf TextBox5.Value = "" Then
            TextBox5.Value = ActiveCell.Offset(0, 5).Value
        ElseIf TextBox6.Value = "" Then
            TextBox6.Value = ActiveCell.Offset(0, 6).Value
        ElseIf TextBox7.Value = "" Then
            TextBox7.Value = ActiveCell.Offset(0, 7).Value
        ElseIf TextBox8.Value = "" Then
            TextBox8.Value = ActiveCell.Offset(0, 8).Value
        ElseIf TextBox9.Value = "" Then
            TextBox9.Value = ActiveCell.Offset(0, 9).Value
        ElseIf TextBox10.Value = "" Then
            TextBox10.Value = ActiveCell.Offset(0, 10).Value
     
        End If
    End Sub

  4. #4
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2015
    Messages : 26
    Points : 19
    Points
    19
    Par défaut
    Bonjour et merci geogeo70,

    Le problème c'est que çà ne marche pas !! enfin si mais, je m'explique.
    Je m'était trompé dans la rédaction du code, certes, mais visiblement çà ne suffit pas.
    Mon userform2 est bien non modal (j'ai bien le focus sur les cellules) et le premier click renseigne bien mon textBox1, mais le travail s’arrête là sans pour autant renvoyer d'erreur ni remplir les autres textBox d'un seul coup.
    J'ai donc modifié mon code conformément à ta réponse et le voici :
    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
    Private Sub UserForm_Click()
     
          If TextBox1.Value = "<>" Then 'SI la textBox1 est remplie, fait le reste
     
        'ElseIf TextBox2.Value = "" Then
            TextBox2.Value = ActiveCell.Offset(0, 2).Value
        'ElseIf TextBox3.Value = "" Then
            TextBox3.Value = ActiveCell.Offset(0, 3).Value
        'ElseIf TextBox4.Value = "" Then
            TextBox4.Value = ActiveCell.Offset(0, 4).Value
        'ElseIf TextBox5.Value = "" Then
            TextBox5.Value = ActiveCell.Offset(0, 6).Value
        'ElseIf TextBox6.Value = "" Then
            TextBox6.Value = ActiveCell.Offset(0, 7).Value
        'ElseIf TextBox7.Value = "" Then
            TextBox7.Value = ActiveCell.Offset(0, 8).Value
        'ElseIf TextBox8.Value = "" Then
            TextBox8.Value = ActiveCell.Offset(0, 9).Value
        'ElseIf TextBox9.Value = "" Then
            TextBox9.Value = ActiveCell.Offset(0, 10).Value
     
        End If
     
    End Sub
    Mais il faut que toutes mes textBox soient renseignées au moment même où la textBox1 est elle-même renseignée.
    Actuellement, mes autres textBox se remplissent seulement click après click ???
    C'est pas trop cool, mais je ne trouve pas le moyen de faire autrement.
    Si quequ'un à une idée ?

    Merci d'avance.

    Salut rdurupt,

    Oupps, j'ai répondu à geogeo70 avant de voir ta propre réponse.
    Mais je vois qu’effectivement je ne suis pas dans la bonne méthode.
    Merci, je vais changer et je reviens.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Au chargement, tous les contrôles sont à nul.
    Donc pas besoin de if
    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
    Private Sub UserForm_Click()
     
           'SI la textBox1 est remplie, fait le reste
     
        'ElseIf TextBox2.Value = "" Then
            TextBox2.Value = ActiveCell.Offset(0, 2).Value
        'ElseIf TextBox3.Value = "" Then
            TextBox3.Value = ActiveCell.Offset(0, 3).Value
        'ElseIf TextBox4.Value = "" Then
            TextBox4.Value = ActiveCell.Offset(0, 4).Value
        'ElseIf TextBox5.Value = "" Then
            TextBox5.Value = ActiveCell.Offset(0, 6).Value
        'ElseIf TextBox6.Value = "" Then
            TextBox6.Value = ActiveCell.Offset(0, 7).Value
        'ElseIf TextBox7.Value = "" Then
            TextBox7.Value = ActiveCell.Offset(0, 8).Value
        'ElseIf TextBox8.Value = "" Then
            TextBox8.Value = ActiveCell.Offset(0, 9).Value
        'ElseIf TextBox9.Value = "" Then
            TextBox9.Value = ActiveCell.Offset(0, 10).Value
     
     
     
    End Sub

  6. #6
    Membre averti
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Points : 442
    Points
    442
    Par défaut
    Bonsoir,

    D'accord avec rdurupt mais je pense que l'on peut composer les deux actions ensemble en utilisant le "Target" de l’événement "selection change".

    Voici mon code proposé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
        UserForm1.TextBox1.Text = Target.Value
        UserForm1.TextBox2.Text = Target.Offset(0, 2).Value
        UserForm1.TextBox3.Text = Target.Offset(0, 3).Value
        UserForm1.TextBox4.Text = Target.Offset(0, 4).Value
        UserForm1.TextBox5.Text = Target.Offset(0, 5).Value
        UserForm1.TextBox6.Text = Target.Offset(0, 6).Value
        UserForm1.TextBox7.Text = Target.Offset(0, 7).Value
        UserForm1.TextBox8.Text = Target.Offset(0, 8).Value
        UserForm1.TextBox9.Text = Target.Offset(0, 9).Value
    End Sub
    de cette façon il suffit de cliquer sur l'enregistrement et la fiche se remplit!

    Nom : userformclic.jpg
Affichages : 841
Taille : 43,5 Ko

    je joins l'essai :
    userformclic.xlsm

    salutations

    geogeo70

  7. #7
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2015
    Messages : 26
    Points : 19
    Points
    19
    Par défaut
    Bonsoir tout le monde,

    Bingo messieurs, c'est parfait et fonctionne exactement comme prévu.
    Vous avez encore assuré.

    Merci pour tout.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/02/2014, 10h41
  2. [SQL-Server] connexion a plusieurs bdd en méme temps avec sql server
    Par mariem deve dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/06/2013, 10h04
  3. Réponses: 6
    Dernier message: 16/02/2013, 12h45
  4. Réponses: 1
    Dernier message: 27/06/2011, 09h47
  5. Réponses: 9
    Dernier message: 17/04/2004, 16h32

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