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 :

Gerer deux classeurs avec un seul userform


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
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Par défaut Gerer deux classeurs avec un seul userform
    Bonsoir

    désolé du derangement, je suis nouveau ici, j'ai besoin d'aide

    j'ai deux classeurs que je dois remplir mais tout dans un meme dossiers, je ne veux pas remplir un classeurs avec un useform et l'autre avec un autre userform.
    J'aimerais savoir s'il serait possible de remplir les deux classeurs qui comportent plusieurs feuilles a l'aide d'un seul userform pour que dans le userform quand je remplir les informations et que je clique sur le bouton de commande qui valide, les informations se dirigent dans les classeurs qui leurs sont destiné

    J'ai un classeur Client et un classeurs produit .

    Le classeur client possede plusieurs feuilles en fonction des noms des clients et le deuxieme classeur a des feuilles qui ont des noms de produit.
    Les differentes feuilles s'ajoutent automatiquement quand le mois change (a l'ouverture du fichier)



    j'arrive a enregistrer dans l'autre classeurs mais pas comme je veux, je veux pouvoir a l'aide d'un combobox avoir accès a toutes les feuilles des deux classeurs et ensuite enregistrer dans la feuille qu'on désire

    Sinon afficher toutes les feuilles du mois actuel et envoyer les informations la ou elles doivent etre



    Voici mon bouton valider
    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
    35
    36
    37
    38
    39
    40
    41
    42
    Private Sub CommandButton1_Click()
    Dim numYear As Integer, numClient As Integer
     
    numClient = InputBox("Veuillez saisir le numéro Client")
    numYear = InputBox("Veuillez saisir l'année")
     
    With Workbooks("TAF 1").Sheets("CLIENT " & numClient & " - " & numYear)
     
     
    x = Now
    With Workbooks("TAF 1").Sheets("CLIENT3 - 2020")
     
                .Range("m1") = ComboBox1.Value
     
                .Range("A5") = TextBox2.Text
                    MsgBox (TextBox2.Text)
                .Range("B5") = TextBox4.Text
                .Range("C5") = TextBox6.Text
                .Range("D5") = TextBox3.Text
                .Range("E5") = TextBox12.Text
                .Range("F5") = TextBox7.Text
                .Range("G5") = TextBox10.Text
                .Range("H5") = TextBox11.Text
                .Range("I5") = TextBox8.Text
                .Range("N5") = x
                .Range("J5") = TextBox13.Text
    End With
    ComboBox1.Text = ""
    TextBox2.Text = ""
    TextBox6.Text = ""
    TextBox3.Text = ""
    TextBox12.Text = ""
    TextBox7.Text = ""
    TextBox10.Text = ""
    TextBox11.Text = ""
    TextBox8.Text = ""
    TextBox9.Text = ""
    TextBox13.Text = ""
    TextBox4.Text = ""
    MsgBox ("ENREGISTREMENT EFFECTUER")
    End With
    End Sub

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il est évident que l'on peut utiliser un UserForm pour écrire dans une plage, d'une feuille et d'un classeur quelconque.
    Il suffit de ne pas "Hard coder" tes procédures. Autrement dit, remplacer les constantes par des variables que tu passes en paramètres au UserForm comme par exemple celles en rouge dans ta ligne de code ci-dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Workbooks("TAF 1").Sheets("CLIENT " & numClient & " - " & numYear)
    Il y a déjà eu sur ce site des contributions, billets dans le blog de Pierre Fauconnier et discussions sur la manière de passer des arguments à un UserForm. Je n'ai malheureusement pas le temps de retrouver les liens
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Par défaut
    Bonjour excusez moi mais je n'ai rien compris
    vous avez recopié le meme code

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai expliqué juste avant la publication de votre code, qu'il fallait remplacer les constantes (en rouge dans VOTRE code que j'ai effectivement reproduit) par des variables (Nom du classeur, de la feuille, de la plage) que l'on passe en arguments à l'objet UserForm
    et j'ai ajouté en dessous de cette publication
    "Il y a déjà eu sur ce site des contributions, billets dans le blog de Pierre Fauconnier et discussions sur la manière de passer des arguments à un UserForm."

    Est-ce plus clair ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Par défaut
    c'est claire, j'arrive tres bien a selectionner les pages dans les deux useform avec deux combobox ou apparaissent les feuilles des differents classeurs.
    mon probleme est que je veux pouvoir envoyer les informations dans les feuilles sélectionnée.
    mais c'est pas le cas, les informations vont sur la feuille de depart

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    j'arrive tres bien a selectionner les pages dans les deux useform avec deux combobox ou apparaissent les feuilles des differents classeurs
    Je crois ne pas avoir bien compris ta question

    Je pensais que tu voulais utiliser un même UserForm pour travailler avec différentes données comme l'exemple ci-dessous
    Si ce n'est pas cela, il faudrait que tu expliques ce que tu cherches à faire exactement

    Exemple très simple pour comprendre
    Un UserForm nommé UserForm2 avec un contrôle LIstBox nommé lstDataBase
    Dans un module quelconque, écrire le code des deux procédures ci-dessous

    Procédure qui alimente le contrôle ListBox avec la plage de données passée à l'argument nommé oRng
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub RunUserForm(oRng As Range)
      ' Argument
      '    rng - plage à afficher dans le UserForm 
      With UserForm2
        With .lstDataBase
        .Clear
        .ColumnCount = 4 ' Affichage de 4 colonnes
        .List = oRng.Value
        End With
      .Show
      End With
      Unload UserForm2
    End Sub
    Code de la procédure qui invoque la procédure RunUserForm
    Pour l'exemple, la plage est dans un tableau structuré qui est le seul dans la première feuille du classeur nommé DataBase_1.xlsb. Le classeur est ouvert
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Main()
      Dim wkb As Workbook
      Dim rng As Range
      Set wkb = Workbooks("DataBase_1.xlsb")
      Set rng = wkb.Worksheets(1).ListObjects(1).DataBodyRange
      RunUserForm rng
    End Sub
    Il suffit de remplacer DataBase_1.xlsb par le nom d'un autre classeur (même condition Tableau structuré qui est seul dans la première feuille de ce classeur) pour voir afficher la liste contenue dans cette plage

    Conclusion : Un seul UserForm peut afficher les données de n'importe quelle plage de données se trouvant dans n'importe quelle feuille de n'importe quel classeur

    Pour en savoir plus, je conseille la lecture de cette contribution de Pierre Fauconnier titrée Modélisation des liaisons entre userform et table de données Excel (tableau structuré)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/02/2008, 11h34
  2. Impression de deux pages avec un seul lien
    Par gantec dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 28/08/2007, 17h04
  3. utiliser deux formulaire avec une seule action
    Par fouyou dans le forum Struts 1
    Réponses: 4
    Dernier message: 28/05/2007, 20h40
  4. Comment ouvrir deux pages avec un seul lien ?
    Par tiliut dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/05/2007, 17h43
  5. Ouvrir deux pages avec un seul form
    Par coco38 dans le forum Langage
    Réponses: 4
    Dernier message: 30/04/2007, 14h19

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