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 :

Userform et listbox demande aide pour appui sur traitement résultat.


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2019
    Messages : 13
    Par défaut Userform et listbox demande aide pour appui sur traitement résultat.
    Bonjour
    Je vous joints ici mon fichier excel.
    J'aimerai une aide sur un bout de code.
    J'ai récupéré une partie de codes VBA, et j'essaye de l'adapter à ce que je souhaite.
    Userform :
    Userform1 est celui qui s'ouvrira à l'exécution du fichier xlsm.
    Si je click sur Fiche commune cela lance le USERFORM10

    Userform10 est celui qui sert à sélectionner la commune désirée et de transférer cela dans l'userform Résultat pour traitement (mails, et sms (partie à écrire encore)
    j'aimerai avoir une selection type Textbox pour taper directement le nom recherché dans ma feuille données de l'afficher ensuite dans résultat.

    J'ai pas le sentiment de tout avoir bouclé convenablement.

    En vous remerciant par avance pour votre aide.

    Merci par avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    Je ne suis pas sûr de comprendre ce que vous voulez faire:
    Pour transférer une donnée d'un formulaire à un autre, les 2 formulaires doivent être actifs pour donner l'instruction du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserForm1.Controls("Txtbox1") = UserForm10.Controls(textbox2).Value
    Pour créer un Textbox et y taper directement le nom recherché dans la feuille "données" puis l'afficher ensuite dans résultat, le mode 'design' permet cela; Autant utiliser une simple cellule et la rendre 'cellule liée' à un textBox du formulaire "Résultat".

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2019
    Messages : 13
    Par défaut
    Bonsoir Merci pour votre réponse
    Il faudrait voir mon fichier pour visualiser ma demande.
    UserForm1.Controls("Txtbox1") = UserForm10.Controls(textbox2).Value n'agira pas dans mon code vba.
    Merci par avance

  4. #4
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    Pouvez-vous donner un exemple de TextBox dont le contenu doit être transféré d'un formulaire à un autre ? J'ai bien ouvert votre fichier (chose que je fais rarement pour des raisons évidentes), et justement, les formulaires contiennent tellement de contrôles qu'on sait pas par où commencer !! un peu plus d'explications serait utile.
    Correction du code (qui devrait fonctionner):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserForm1.Controls("Textbox1") = UserForm10.Controls("textbox2").Value
    où TextBox(1 & 2) doivent être remplacés par les vrais noms de contrôles dans les formulaires respectifs.
    Autre possibilité (que je n'ai jamais essayée): si Textbox1 et Textbox2 sont liés à la même cellule (propriété "LinkedCell"), alors le tour est joué; l'idée de transfert devient redondante.

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2019
    Messages : 13
    Par défaut Userform10 et résultat
    pour que vous puissiez comprendre mon idée je vous joints une capture du userform10
    j'ai entouré la zone à transférer dans le userform Résultat
    J'ai joint la capture des éléments de résultat.
    En espérant être précis, et vous remercie par avance.
    Images attachées Images attachées   

  6. #6
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    Je crois avoir deviné !
    Je pars de l'hypothèse qu'en cliquant sur une commune (dans Form10), je récupère toute l'info affichée dans la listeBox1 pour la coller dans une feuille nommée "Sheet1" - à créer !
    Ensuite, à l'ouverture du formulaire "Résultat", j'injecte l'info ainsi obtenue dans les TextBoxes correspondants. Est-ce exploitable pour vous ?
    Voici 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
    Private Sub ListBox1_Click()
     
      For i = 1 To NbCol
        tmp = Me.ListBox1.Column(i - 1)
        If Not IsError(tmp) Then Me("textbox" & i) = tmp
      Next i
      Me.Enreg = Me.ListBox1.Column(NbCol)
     
      For j = 1 To Me.ListBox1.ColumnCount                       'Nouveau
        On Error Resume Next                       'Nouveau
        Sheets("Sheet1").Cells(1, j) = Me.ListBox1.Column(j)                       'Nouveau
      Next j                       'Nouveau
     
    End Sub
    Je n'ai qu'à appliquer cette méthode à tout TxtBox concerné.
    et lors de l'initialisation du formulaire "Résultat", on met à jour les différents TextBoxes; Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.TextBox25.Value = Sheets("Sheet1").[C1] & " " & Sheets("Sheet1").[D1]   'Nom Prénom

  7. #7
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2019
    Messages : 13
    Par défaut On y est presque
    Super en partie résolue copie dans la feuille sheet1
    J'aimerai récupérer la totalité des données.
    Et l'afficher dans Résultat.
    Mais bug par moment car la boucle suivante si je sélectionne autre commune le copier coller se fait dans la partie ''données'' et non plus dans sheet
    Merci pour votre patience

  8. #8
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    Désolé, il m'est difficile de visualiser le problème, mais à tout hasard, avant la ligne 177 du code (Form10), mettez ceci : Sheets("Sheet1").activate; comme ceci:
    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 ListBox1_Click()
     
      For i = 1 To NbCol
        tmp = Me.ListBox1.Column(i - 1)
        If Not IsError(tmp) Then Me("textbox" & i) = tmp
      Next i
      Me.Enreg = Me.ListBox1.Column(NbCol)
     
      Sheets("Sheet1").Activate     'NOUVEAU !!
      For j = 1 To Me.ListBox1.ColumnCount
        On Error Resume Next
        Sheets("Sheet1").Cells(1, j) = Me.ListBox1.Column(j)
        Sheets("Sheet1").Cells(1, j).Activate
      Next j
     
    End Sub

  9. #9
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2019
    Messages : 13
    Par défaut
    Super
    Cela fonctionne
    Je déploie dans mon fichier et reviendrai vers vous
    EN vous remerciant pour votre patience et votre aide
    Bien cordialement
    Mike

  10. #10
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    Au fait, la ligne 13 de mon code ci-dessus "Sheets("Sheet1").Cells(1, j).Activate" est inutile !

  11. #11
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2019
    Messages : 13
    Par défaut
    Il me reste a structurer dans Résultat l'USF les données issues de USF10 dans le bon ordre

  12. #12
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2019
    Messages : 13
    Par défaut Je remets en non résolu juste pour info complémentaire VBA code
    Bonjour
    Suite à votre code, il marche nickel
    mais la transposition dans le feuille sheet ne se fait pas dans le bon ordre tel qu'il est représenté dans l'USF10
    puis lorsque je retourne de l'USF résultat, la ligne sheet1 se décale
    Je souhaite qu'il reste sur la sheet données, pour éviter ces vas et vient de feuille à feuille qui me semble perturber dans le cas d'une demande répétée sur le fichier.

    Autre bout de vba qui me pose souci lors de la mise en place de L'USF10

    ici aussi le code pose problème car la zone (ligne 3) A6:Z ne correspond pas en totalité de ma sheet ''données qui va jusqu'à la colonne BM

    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 UserForm_Initialize()
       Set f = Sheets("données")
       Set Rng = f.Range("A6:Z" & f.[A65000].End(xlUp).Row)    ' 1 colonne de plus
       nomTableau = "Tableau1"
       ActiveWorkbook.Names.Add Name:=nomTableau, RefersTo:=Rng                                     ' A adapter
       NbCol = Range(nomTableau).Columns.Count - 1
       données = Rng.Value                                          ' données dans un Array pour rapidité
       For i = 1 To UBound(données): données(i, NbCol + 1) = i: Next i
       titre = Application.Index(Rng.Offset(-1).Value, 1)      ' Titres de la données
       Me.ComboBox1.List = titre
       Me.ListBox1.List = données
       EnTeteListBox
       Me.ListBox1.ColumnCount = NbCol + 1
       Me.ComboBox1.ListIndex = 1
       '-- labels textbox
       LabelsTextBox
       For i = NbCol + 1 To 34: Me("textbox" & i).Visible = False: Next i
       For i = NbCol + 1 To 34: Me("label" & i).Visible = False: Next i
        '-- colTri
       'Me.ComboTri.List = Application.Transpose(Range(nomTableau).Offset(-1).Resize(1))  ' Ordre tri
       B_ajout_Click
    End Sub
    Avez-vous une idée?

Discussions similaires

  1. Besoin d'aide pour boucle sur deux listbox
    Par mimicor15 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/02/2017, 16h06
  2. Demande aide pour evenement sur widget Canvas
    Par prolog22000 dans le forum Tkinter
    Réponses: 10
    Dernier message: 19/03/2010, 07h34
  3. Besoin d'aide pour requête sur grosse table
    Par Fabouney dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/01/2006, 10h01
  4. demande aide pour XML/XSL
    Par Jarod51 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/01/2006, 20h10
  5. aide pour requete sur 2 tables avec clé étranere
    Par richton95 dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/12/2005, 14h32

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