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 :

(VBA)Remplir Textbox à partir d'un autre classeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre très actif
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Par défaut (VBA)Remplir Textbox à partir d'un autre classeur
    Bonjour Le Forum,

    J'ai beau chercher partout sur le net, je ne trouve rien qui puisse m'aider.
    J'ai essayer par tous les moyens d'alimenter mes textbox de mon UserForm du classeur PLAN, à partir de valeurs qui se trouve dans le classeur PROFIL, feuille PROFILS.

    Pour alimenter certaines textbox à partir du classeur PLAN, j'utilise la méthode Activecell.offset qui fonctionne parfaitement bien.
    Elles se remplissent parce que : j'alimente une listbox1 en fonction d'une combobox. Quand je clic sur un item de la listbox1, certaines textbox se remplissent parce que ma méthode va chercher le numéro d'index unique que je saisi en bout de ligne dans ce classeur, correspondant à ma recherche.

    Et donc, en cliquant sur mon autre Listbox(Listbox2), il faut que certaines textbox se remplissent en fonction des valeurs du classeur PROFIL, feuille PROFILS.

    Je dois continuer avec la méthode activecell.offset.

    Avez-vous une idée svp ?

    Merci beaucoup

  2. #2
    Membre très actif
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Par défaut
    En "bidouillant" j'ai finalement réussi de cette façon :

    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 Listbox2_click()
     
    Dim numlign
     
    With Workbooks("PLAN")
    .Activate
    ActiveWindow.WindowState = xlMinimized
    End With
     
     
    With Workbooks("PROFIL")
    .Activate
    ActiveWindow.WindowState = xlMaximized
    Application.Run ("'PLAN.xlsm'!OuvreUF1")
     
      Columns("r:r").Select
        numlign = Selection.Find(What:=numlign, After:=ActiveCell, LookIn:=xlFormulas, lookat _
            :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
            False, SearchFormat:=False).EntireRow.Select
     End With
     
     
    Textbox1 = ActiveCell.Offset(0, 3).Value
    Textbox2 = ActiveCell.Offset(0, 14).Value
    Textbox3 = ActiveCell.Offset(0, 1).Value
    end sub

    Par contre, il y a un problème que je ne comprend pas !

    Il n'y a que la Textbox1 qui se remplie et par les 2 autres. J'ai essayé en supprimant "Textbox1 = ActiveCell.Offset(0, 3).Value" et Textbox2 se remplie mais pas Textbox3.

    Pourquoi une seule se remplie ??

    J'utilise ce code pour remplir ma Listbox1 qui prend les données dans le classeur PLAN(classeur où se trouve mon UserForm), et tout fonctionne parfaitement.
    Mais là en allant chercher les valeurs dans un autre classeur, 1 seule textbox se remplie et pas les autres


    Vous avez une idée du pourquoi du comment ?

    Merciiiii

  3. #3
    Membre très actif
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Par défaut
    En fait, cela ne fonctionne pas...
    Je dois, je pense, utiliser la méthode du dictionnaire pour rechercher les doublons, mais je n'y comprend rien :s

    En fait Si : je cherche monsieur DUPONT Martin dans ma combobox, dans la listbox1 s'affiche toutes les lignes où il figure.
    Quand je clique sur une des lignes, des textbox se remplissent avec la méthode activecell.offset.

    Ce qui donne dans :

    Combobox : DUPONT Martin
    Textbox1 : 40 ans
    Textbox2 : grand
    Textbox3 : musique

    Mais il faut que d'autres textbox se remplissent en allant chercher les valeurs dans mon autre classeur PROFIL. Pour cela, il faut biensur que cela trouve la ligne où le même NOM figure ainsi que la même valeur que dans la Textbox1.

    Donc si dans PROFIL, sur la même ligne il y a DUPONT Martin et 40 ans, alors Textbox4 : 3 enfants, Textbox5 : voiture etc ....

    Merci pour votre aide.

  4. #4
    Membre très actif
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Par défaut
    Help le forum svp.

    J'ai vraiment besoin d'aide, il s'agit en plus d'un projet professionnel pour mon employeur. Je suis complètement bloquée à cause de ça.

    Je vous remercie beaucoup.

  5. #5
    Membre très actif
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Par défaut
    Quelqu'un aurait une idée svp ?

    Je désespère, je ne trouve rien qui puisse m'aider

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Lorsque tu écris :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Offset(0, 3).Value
    tu es sur une cellule du classeur actif et donc sur la cellule active (celle en cours) du classeur que tu as activé (et donc le classeur PROFIL et non celui (le classeur PLAN) dont tu dis vouloir extraire des données.

    Car je lis ceci :
    Pour alimenter certaines textbox à partir du classeur PLAN

  7. #7
    Membre très actif
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Par défaut
    Donc comment faire pour naviguer d'un classeur à l'autre pour rendre l'un actif, l'autre inactif ?

  8. #8
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Bonjour,

    il est inutile de rendre un classeur actif pour accéder à ses données !
    Juste en respectant le modèle objet d'Excel : Classeur.Feuille.Plage ou Cellule …
    Tous les Activate & Select ne servant qu'à ralentir la procédure, parfois même la perturbant !


    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …

  9. #9
    Membre très actif
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Par défaut
    D'accord,

    Alors comment combiner la méthode que tu me propose avec 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 Listbox3_Click()
     
    Dim i, numlign
    Application.Run ("'PROFIL.xlsm'!OuvreUF1")
     
    For i = 0 To ListBox3.ListCount - 1
        If ListBox3.Selected(i) = True Then
         ListBox2.ListIndex = -1
            numlign = ListBox3.List(i, 7)
     End If
    Next i
     
    columns("r:r").Select
        numlign = Selection.Find(What:=numlign, After:=ActiveCell, LookIn:=xlFormulas, lookat _
            :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
            False, SearchFormat:=False).EntireRow.Select
    ceci ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Workbooks("PLAN.xlsx").Worksheets("Plan").columns("r:r").Select
        numlign = Selection.Find(What:=numlign, After:=ActiveCell, LookIn:=xlFormulas, lookat _
            :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
            False, SearchFormat:=False).EntireRow.Select

    Je m'y prend peut-être mal ...

    Merci

  10. #10
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Un exemple dans cette discussion

    Voir aussi dans l'aide VBA l'utilisation de l'instruction With

    et vu le code ci-dessus l'exemple de l'aide de la méthode Find

    Et oui car il faut vérifier le résultat de Find ! Et « ceci ne fonctionne pas » étant par trop peu explicite …
    D'après ce code tu cherches un numéro dans les formules de calculs d'après une variable
    représentant ce numéro mais aussi résultat objet de Find ?‼ Là c'est vraiment tarabiscoté !

    numlign = Selection.Find(What:=numlign, […] .Entirow.Select : cette ligne n'a aucun sens …

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    le grand mystère pour moi, c'est d'où vient ce fichier PROFIL?, est ce qu'il est ouvert? ou c'est l'application qui l'ouvre? est ce que je le modifie? ou pas?
    la solution peut varier en fonction du conteste!

    Citation Envoyé par rdurupt
    Bien planter le décor peut aider à formuler la question à 100% !

Discussions similaires

  1. [XL-2007] Créer du code dans le classeur A à partir d'un autre classeur B
    Par geo909 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/05/2009, 17h36
  2. Réponses: 3
    Dernier message: 08/08/2008, 13h05
  3. Ouvrir un classeur à partir d'un autre classeur
    Par nomade333 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/03/2008, 15h55
  4. [VBA-E]Fermer un classeur en réseau à partir d'un autre classeur
    Par Pietro_L dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 10/05/2007, 10h08
  5. controler checkBox à partir d'un autre classeur
    Par Echizen1 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/07/2006, 09h26

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