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 :

Copier des informations d'un userforms à un tableau Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 110
    Par défaut Copier des informations d'un userforms à un tableau Excel
    Bonjour

    Presque tout est dans le titre.


    Alors voilà, j'ai un programme qui affiche un userform. Dans ce userform je rentre des informations, ces informations doivent être copier par la suite dans un tableau excel.


    Et c'est sur ce dernier point que mon programme bug.


    Voilà le code que mon programme qui se trouve dans un module de mon tableau Excel, celui qui doit recevoir les informations.

    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
    Sub creation_code()
    Dim a As Range
    Set a = Workbooks("bd_code.xls").Worksheets("liste_codes").Range("a2")
    
    While a <> ""
    Set a = a.Offset(1, 0)
    Wend
    
    a.Value = textbox1.Value
    a.Offset(0, 1).Value = textbox2.Value
    
    ThisWorkbook.Save
    
    End Sub

    Je l'ai testé il marche bien, mais le debugger s'arrête sur la ligne en rouge. La seconde ligne en rouge elle aussi bug donc.

    En fait j'ai besoin d'une information technique, sur comment écrire dans le tableau excel les informations des textboxs de mon userform.

    Merci pour les informations et le temps prit pour me répondre.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 110
    Par défaut
    Mon problème s'affine.

    En fait j'arrive à copier les informations de mon userform2. Mais j'ai un deuxèime userform (appellé userform1) et ses informations à lui ne s'enregistre pas sur la feuille Excel.

    En quelques points voilà ce que je fais :

    1)clic sur un bouton qui déclenche l'userform 1
    2)je rentre mes infos dans l'userform 1
    3)clic sur un bouton dans l'userform 1 qui déclenche:

    userform2.show
    unload me
    4) je rentre mes infos dans l'userform2
    5)clic sur un bouton qui déclenche une macro qui copie les informations de mon userform 2 dans un tableau Excel mais il ne copie pas les infos de mon userform1.

    Tout se passe donc bien sauf que les informations de mon userform1 se sont pas copier dans mon tableau.

  3. #3
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Ton problème vient du fait que tu Unload le UserForm1, c'est à dire que tu le sors de la mémoire et réinitialise tous ses contrôles.

    Essaye ceci dans ton UserForm1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UserForm2.show
    Me.Hide

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 110
    Par défaut
    Merci pour les infos.

    J'essaierai demain au bureau et je ferai un retour ici.

    Merci en tout cas.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 110
    Par défaut
    Ca marche pas !

    Peut être une erreur de ma part quelque part. Est ce que d'autres informations osnt nécessaires ??

  6. #6
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Peut être une erreur de ma part quelque part.
    Je dirais...probablement que oui

    Est ce que d'autres informations osnt nécessaires ??
    Oui, sans le code complet impossible de deviner où ça coince

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 110
    Par défaut
    Alors voilà le code qui se trouve sur mon premier classeur excel.

    Code de mon premier formulaire qui se trouve dans la section "feuille" dans l'explorateur de projet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub CommandButton1_Click()
    formulaire_creation_personnel2.Show
    Me.Hide
    End Sub
    --------------------------------------------------------------------------
    Private Sub CommandButton2_Click()
    Unload Me
    End Sub
    --------------------------------------------------------------------------
    Private Sub UserForm_Initialize()
    TextBox4 = "contact@email.com"
    TextBox5 = "sans espace"
    End Sub

    Code de mon deuxième formulaire qui se trouve lui aussi dans la section "feuille" de l'explorateur de projet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub CommandButton1_Click()
    Unload Me
    Workbooks.Open ("D:\Documents and Settings\Mes documents\outil\personnels\bd_personnel.xls")
    Application.Run "bd_personnel.xls!creation_personnel"
    End Sub
    --------------------------------------------------------------------------
     
    Private Sub CommandButton2_Click()
    Unload Me
    End sub
    Code de mon programme VBA sur le deuxième classeur dans la section module de l'explorateur de projet, celui qui reçoit les informations:
    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
    Sub creation_personnel()
     
    Dim a As Range
    Set a = Workbooks("bd_personnel.xls").Worksheets("liste_personnel").Range("a2")
     
    While a <> ""
    Set a = a.Offset(1, 0)
    Wend
     
    a = textbox1
    a.Offset(0, 1) = textbox2
    a.Offset(0, 2) = textbox3
    a.Offset(0, 4) = textbox4
    a.Offset(0, 5) = textbox5
     
    If checkbox1 = True Then
    a.Offset(0, 3) = "Anglais"
    End If
     
    ThisWorkbook.Save
    End Sub
    Encore une fois tout marche très bien sauf l'écriture des données qui se trouvent dans les textbox du premier formulaire. je vois pas trop où peut être l'erreur.

    Merci pour le coup de main mais ça me débloquerait tout mon boulot de trouver ça !

  8. #8
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    C'est très confus, je ne m'y retrouve pas...

    Pour commencer, pourquoi ce bout de code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    While a <> ""
    Set a = a.Offset(1, 0)
    Wend
    Tu fais une boucle sur une seule cellule ! que cherches tu à faire exactement ?

    Ensuite dans cette partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    a = textbox1
    a.Offset(0, 1) = textbox2
    a.Offset(0, 2) = textbox3
    a.Offset(0, 4) = textbox4
    a.Offset(0, 5) = textbox5
    Si tu ne précises pas où se situe les TextBox, il ne peut pas le deviner tout seul et le problème est que ta procédure se trouve dans le classeur 2 et doit récupérer les infos dans un UserForm du classeur 1. Le plus simple serait de mettre la procédure dans le classeur 1 et d'envoyer les infos dans le classeur 2.

    C'est trop nébuleux pour apporter des réponses précises à ton problème, essaye d'expliquer ce que tu cherches à faire et les différentes étapes pour y arriver.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 110
    Par défaut
    While a <> ""
    Set a = a.Offset(1, 0)
    Wend
    Ce bout de code me permet de copier les informations que je récupère dans la toute première ligne disponible. Elle n'est pas forcément la dernière de ma base de données.

    Si tu ne précises pas où se situe les TextBox, il ne peut pas le deviner tout seul et le problème est que ta procédure se trouve dans le classeur 2 et doit récupérer les infos dans un UserForm du classeur 1. Le plus simple serait de mettre la procédure dans le classeur 1 et d'envoyer les infos dans le classeur 2.
    Ok je vois ce que tu veux dire, plus simple d'envoyer les infos directement plutot que de demander à mon classeur 2 de les récupérer.

    En fait c'est simple ce que je veux faire. Dans mon premier classeur j'ai un bouton qui appelle le formulaire 1, je remplie les textbox, j'appelle mon deuxième formulaire en cliquant sur un bouton suivant, je rempli les autres textbox (en fait j'en ai plein et pour des informations différentes d'où le fait que j'ai deux formulaires.

    Ensuite en cliquant sur un bouton "enregistrer" sur le deuxième formulaire, je déclenche mon programme creation_personnel.

    Ce qui me manque donc c'est le chemin d'accès pour récupérer mes infos alors.

    Un truc du genre:

    a = "formulaire1".textbox1
    a.Offset(0, 1) = "formulaire1".textbox2
    a.Offset(0, 2) = "formulaire1".textbox3
    a.Offset(0, 4) = "formulaire1".textbox4
    a.Offset(0, 5) = "formulaire1".textbox5

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 110
    Par défaut
    Bon finalement j'ai copier mon code dans mon formulaire donc ça marche

    Merci quand même Fring et désolé pour la prise de tête.

    Mais si juste comme ça tu as la solution à mon erreur je suis preneur.

  11. #11
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    à vue de nez, voici comment je procéderais, code de ton bouton "Valider" de ton 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
    Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
    Dim Wbk As Workbook, Sh As Worksheet, Cel As Range
     
    Set Wbk = Workbooks.Open("D:\Documents and Settings\Mes documents\outil\personnels\bd_personnel.xls")
    Set Sh = Wbk.Sheets("NomFeuille") '<-- adapter le nom de la feuille du classeur bd_personnel
    Set Cel = Sh.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
     
    With UserForm1 '<-- adapter le nom du userform1
        Cel = .textbox1
        Cel.Offset(0, 1) = .textbox2
        Cel.Offset(0, 2) = .textbox3
        Cel.Offset(0, 4) = .textbox4
        Cel.Offset(0, 5) = .textbox5
        If .checkbox1 = True Then Cel.Offset(0, 3) = "Anglais"
    End With
     
    Wbk.Save
    Wbk.Close
     
    Application.ScreenUpdating = True
    Unload UserForm1 '<-- adapter le nom du userform 1
    Unload UserForm2 '<-- adapter le nom du userform 2
    End Sub

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

Discussions similaires

  1. [XL-2013] Copier des informations dans un tableau selon une référence
    Par hvegung dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 30/06/2015, 12h14
  2. [XL-2003] copier des informations nominatives dans un tableau
    Par FabienG dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/11/2011, 15h44
  3. Réponses: 8
    Dernier message: 11/02/2008, 16h22
  4. Réponses: 4
    Dernier message: 19/03/2006, 15h20
  5. Réponses: 5
    Dernier message: 02/11/2005, 11h49

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