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 tableau avec Userform [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Mai 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 36
    Points : 28
    Points
    28
    Par défaut Remplir tableau avec Userform
    Bonjour à toutes et à tous,

    J'ai un classeur "Activité - 2011.xls", qui comprend un onglet par mois.

    J'ai créé un Userform permettant aux utilisateurs de remplir ce classeur.

    Je suis bloqué sur 3 points dans l'avancement de mon projet :

    1. La ComboBox1 doit permettre de choisir l'onglet où on va extraire les données.

    2. Le DTPicker1 doit permettre de choisir la date où on va extraire les données dans l'onglet.

    3. Je n'arrive pas à coder le CommandButton2 pour extraire les données à l'endroit choisi précédemment.

    En PJ, vous trouverez mon classeur.

    A vous lire.

    Bien cordialement,
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour
    Pour un départ, remplace les codes de Userform, Combobox1 et CommandButton2 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
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Dim wsMois As Worksheet
    Dim Lig As Integer
     
    Private Sub UserForm_Initialize()
    Dim ws As Worksheet
     
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> "Edition" Then Me.ComboBox1.AddItem ws.Name
    Next ws
    Me.DTPicker1.Visible = False
    End Sub
     
    Private Sub ComboBox1_Change()
    If Me.ComboBox1.ListIndex > -1 Then
        Set wsMois = ThisWorkbook.Worksheets(Me.ComboBox1.Value)
        wsMois.Activate
        With Me.DTPicker1
            .Visible = True
            .Value = CDate(wsMois.Range("A2").Value)
            .SetFocus
        End With
    Else
        Set wsMois = Nothing
        Me.DTPicker1.Visible = True
    End If
    End Sub
     
    Private Sub DTPicker1_Change()
    Dim LastLig As Integer
    Dim c As Range
     
    With wsMois
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        Set c = .Range("A2:A" & LastLig).Find(Me.DTPicker1.Value, lookat:=xlWhole)
        If Not c Is Nothing Then
            Lig = c.Row
            Set c = Nothing
        Else
            Lig = 0
        End If
    End With
    End Sub
     
    'Extraction des données saisie dans le formulaire
    Private Sub CommandButton2_Click()
    Dim j As Byte
     
    If Lig > 1 Then
        With wsMois
            For j = 2 To 7
                .Cells(Lig, j).Value = Me.Controls("TextBox" & j - 1).Value
            Next j
            For j = 10 To 13
                .Cells(Lig, j).Value = Me.Controls("TextBox" & j - 3).Value
            Next j
            .Cells(Lig, 15).Value = Me.TextBox11.Value
            For j = 17 To 19
                .Cells(Lig, j).Value = Me.Controls("TextBox" & j - 5).Value
            Next j
     
        End With
        Unload Me
    Else
        MsgBox "Vérifiez la date"
    End If
    End Sub
    Pour les test sur les textbox, je crois que tu devras passer par un module de classe. mais cela une autre question (pour plus tard)
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Mai 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 36
    Points : 28
    Points
    28
    Par défaut
    mercatog, bonjour et merci pour ces éléments de réponses !

    Ton code permet bien de sélectionner l'onglet où on va extraire les données.

    Cependant, quand je veux utiliser DTPicker1 pour modifier la date, j'ai une Erreur dexécution '424', à la ligne en gras :

    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 DTPicker1_Change()
    Dim LastLig As Integer
    Dim c As Range
    With wsMois
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        Set c = .Range("A2:A" & LastLig).Find(Me.DTPicker1.Value, lookat:=xlWhole)
        If Not c Is Nothing Then
            Lig = c.Row
            Set c = Nothing
        Else
            Lig = 0
        End If
    End With
    End Sub
    Par ailleurs, les données saisies dans le formulaire ne sont pas extraites dans l'onglet sélectionné.

    Encore merci !

    Bien cordialement,

    Mon fichier en PJ
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim wsMois As Worksheet
    Dim Lig As Integer
    Doivent être en début du module de l'userform (en haut avant toutes les procédures)
    Dans ton fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim wsMois As Worksheet
    Dim Lig As Integer
     
    'Saisie Nb Appels Front reçus
    Private Sub TextBox1_Change()
    On Error Resume Next
    If Not IsNumeric(Right(TextBox1, 1)) Then
    MsgBox "Le caractère saisi n'est pas valide : Nb entier uniquement"
    'et lasuite....
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Mai 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 36
    Points : 28
    Points
    28
    Par défaut Remplir tableau avec Userform
    Bonjour mercatog,

    Tout fonctionne parfaitement désormais

    Encore merci !

    Bien cordialement,

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

Discussions similaires

  1. remplir tableau avec une seule instruction !
    Par tlemcenvisit dans le forum C++
    Réponses: 3
    Dernier message: 21/06/2014, 18h22
  2. Remplir tableau avec DataSet
    Par Aizen64 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/06/2008, 00h04
  3. Remplir tableau avec clé de reprise
    Par Airmus23 dans le forum Cobol
    Réponses: 2
    Dernier message: 22/10/2007, 09h34
  4. [Tableaux] Remplir tableau avec variable
    Par nicerico dans le forum Langage
    Réponses: 1
    Dernier message: 09/07/2007, 15h35
  5. [Tableaux] Remplir tableau avec ordre defini
    Par nicerico dans le forum Langage
    Réponses: 2
    Dernier message: 03/11/2006, 10h28

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