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 :

classeur composé de deux feuilles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2017
    Messages : 26
    Par défaut classeur composé de deux feuilles
    Bonjour à tous

    Je suis débutant avec VB merci pour votre aide.

    Le UserForm me permet de remplir un tableau Excel, mon classeur est composé de deux feuilles.
    Le nom de la feuille activée dépend du choix que je fais en amont sur une ComboBox1 intituler code de bureau (411 ou autres)
    Comment je fais pour dire à Excel si je choisis le code de bureau 411 les enregistrements seront faits dans la première feuille et si je choisis autres mes enregistrements seront faits dans la deuxième feuille de mon classeur à l'aide de mon userform

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    il suffit de placer dans ton code .... non mais attend, il est où ton code ???

    montre-nous ça, petit cachottier

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2017
    Messages : 26
    Par défaut mon code
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
     
     
    '******************************
    'procédure permettant de
    'Fermer mon formulaire
    '******************************
    Private Sub btnFermmer_Click()
        Unload Me
     
    End Sub
     
    Private Sub btnChercher_Click()
     
        Dim I As Long, nbLignes As Long
        Dim Donnée As Worksheet
        Dim Trouve As Boolean
     
        Set Donnée = Sheets("Donnée")
     
        nbLignes = Donnée.Cells(Rows.Count, "A").End(xlUp).Row
     
    '    Recherche les valeurs entrées dans txtCommentaire et txtContacte
        For I = 1 To nbLignes
            If LCase(Donnée.Range("C" & I)) = LCase(CMtxtRégime.Value) And LCase(Donnée.Range("D" & I)) = LCase(UserForm1.CMtxtRéférence.Value) Then  'vérifie les lettres de colonnes
                Trouve = True
     
                UserForm1.CMtxtDatedébut.Value = Donnée.Cells(I, 1).Value
                UserForm1.CMCombocode.Value = Donnée.Cells(I, 2).Value
                UserForm1.CMtxtRégime.Value = Donnée.Cells(I, 3).Value
                UserForm1.CMtxtRéférence.Value = Donnée.Cells(I, 4).Value
                UserForm1.CMtxtImportateur.Value = Donnée.Cells(I, 5).Value
                UserForm1.CMtxtExportateur.Value = Donnée.Cells(I, 6).Value
                UserForm1.CMtxtDésignation.Value = Donnée.Cells(I, 7).Value
                UserForm1.CMcboTransitaire.Text = Donnée.Cells(I, 8).Value
                UserForm1.CMcboEtat.Text = Donnée.Cells(I, 9).Value
                UserForm1.CMtxtNb.Value = Donnée.Cells(I, 10).Value
                UserForm1.CMtxtDatedépôt.Value = Donnée.Cells(I, 11).Value
                UserForm1.CMtxtPoids.Value = Donnée.Cells(I, 12).Value
                UserForm1.CMtxtValeur€.Value = Donnée.Cells(I, 13).Value
                UserForm1.CMtxtlValeurMad.Value = Donnée.Cells(I, 14).Value
                UserForm1.CMtxtDateclôture.Value = Donnée.Cells(I, 15).Value
                UserForm1.CMcboModetransport.Text = Donnée.Cells(I, 16).Value
                Exit For
            End If
        Next
     
        If Not Trouve Then
            MsgBox "Aucune donnée correspondante trouvée"
        End If
     
        Set Donnée = Nothing
     
    End Sub
     
     
    '******************************
    'Procédure permettant d'acéder
    'a la Base de données
    '******************************
    Private Sub btnSource_Click()
        Sheets("Donnée").Activate
        Range("A1").Select
     
    End Sub
     
     
    Private Sub btnsupprimer_Click()
    r = MsgBox("Voulez vous confirmer la suppression?", vbYesNo, "gestion des déclarations")
    If r <> 16 Then Exit Sub
    Selection.EntireRow.Delete
     
    End Sub
     
     
     
    Private Sub btnModifier_Click()
        Set Donnée = Sheets("Donnée")
     
      nbLignes = Donnée.Cells(Rows.Count, "A").End(xlUp).Row
     
        For I = 1 To nbLignes
            If LCase(Donnée.Range("C" & I)) = LCase(CMtxtRégime.Value) And LCase(Donnée.Range("D" & I)) = LCase(UserForm1.CMtxtRéférence.Value) Then  'vérifie les lettres de colonnes
                Trouve = True
                 UserForm1.CMtxtDatedébut.Value = Donnée.Cells(I, 1).Value
              Donnée.Cells(I, 2).Value = UserForm1.CMCombocode.Value
              Donnée.Cells(I, 3).Value = UserForm1.CMtxtRégime.Value
              Donnée.Cells(I, 4).Value = UserForm1.CMtxtRéférence.Value
              Donnée.Cells(I, 5).Value = UserForm1.CMtxtImportateur.Value
              Donnée.Cells(I, 6).Value = UserForm1.CMtxtExportateur.Value
              Donnée.Cells(I, 7).Value = UserForm1.CMtxtDésignation.Value
              Donnée.Cells(I, 8).Value = UserForm1.CMcboTransitaire.Text
              Donnée.Cells(I, 9).Value = UserForm1.CMcboEtat.Text
              Donnée.Cells(I, 10).Value = UserForm1.CMtxtNb.Value
              Donnée.Cells(I, 11).Value = UserForm1.CMtxtDatedépôt.Value
              Donnée.Cells(I, 12).Value = UserForm1.CMtxtPoids.Value
              Donnée.Cells(I, 13).Value = UserForm1.CMtxtValeur€.Value
              Donnée.Cells(I, 14).Value = UserForm1.CMtxtlValeurMad.Value
              Donnée.Cells(I, 15).Value = UserForm1.CMtxtDateclôture.Value
              Donnée.Cells(I, 16).Value = UserForm1.CMcboModetransport.Text
     
            Exit For
        End If
    Next
    End Sub
     
     
    Private Sub Frame1_Click()
     
    End Sub
     
    Private Sub MultiPage1_Change()
     
    End Sub
     
    Private Sub UserForm_Initialize()
        txtDatedébut.Value = Date
        txtDatedépôt.Value = Date
    End Sub
     
     
    'Procédure permettant de réinitialiser tous
    'les champs du formulaire page 1 & page 2
    '***********************************************
    Private Sub btnEffacer_Click()
     
        Select Case Me.MultiPage1.Pages0
     
    Case 1:
        txtDatedébut = ""
        Combocode = ""
        txtRégime = ""
        txtRéférence = ""
        txtImportateur = ""
        txtExportateur = ""
        txtDésignation = ""
        cboTransitaire = ""
        cboEtat = ""
        txtNb = ""
        txtDatedépôt = ""
        txtPoids = ""
        txtValeur€ = ""
        txtlValeurMad = ""
        txtDateclôture = ""
        cboModetransport = ""
     
    Case 2:
        CMtxtDatedébut = ""
        CMCombocode = ""
        CMtxtRégime = ""
        CMtxtRéférence = ""
        CMtxtImportateur = ""
        CMtxtExportateur = ""
        CMtxtDésignation = ""
        CMcboTransitaire = ""
        CMcboEtat = ""
        CMtxtNb = ""
        CMtxtDatedépôt = ""
        CMtxtPoids = ""
        CMtxtValeur€ = ""
        CMtxtlValeurMad = ""
        CMtxtDateclôture = ""
        CMcboModetransport = ""
       End Select
     
    End Sub
     
     
    'Procédure permettant de réinitialiser tous
    'le bouton d'ajout d'enregistrement
    '***********************************************
    Private Sub txtDatedébut_Change()
        If txtDatedébut <> "" Then
     
            btnAjout.Enabled = True 'Activer le bouton
        Else
            btnAjout.Enabled = False 'Désactiver le bouton
     
        End If
     
    End Sub
     
    '*********************************************
    'Procédure permettant d'ajouter un nouvel enregistrement
    'dans la base de données
    '***********************************************
    Private Sub btnAjout_Click()
     
    I = Sheets("Donnée").Range("A665536").End(xlUp).Row
    Sheets("Donnée").Range("A" & I + 1).Value = txtDatedébut
    Sheets("Donnée").Range("B" & I + 1).Value = Combocode
    Sheets("Donnée").Range("C" & I + 1).Value = txtRégime
    Sheets("Donnée").Range("D" & I + 1).Value = txtRéférence
    Sheets("Donnée").Range("E" & I + 1).Value = cboTransitaire
    Sheets("Donnée").Range("F" & I + 1).Value = txtExportateur
    Sheets("Donnée").Range("G" & I + 1).Value = txtImportateur
    Sheets("Donnée").Range("H" & I + 1).Value = txtDésignation
    Sheets("Donnée").Range("I" & I + 1).Value = txtNb
    Sheets("Donnée").Range("J" & I + 1).Value = txtPoids
    Sheets("Donnée").Range("K" & I + 1).Value = txtDatedépôt
    Sheets("Donnée").Range("L" & I + 1).Value = txtValeur€
    Sheets("Donnée").Range("M" & I + 1).Value = txtlValeurMad
    Sheets("Donnée").Range("N" & I + 1).Value = cboEtat
    Sheets("Donnée").Range("O" & I + 1).Value = txtDateclôture
    Sheets("Donnée").Range("P" & I + 1).Value = cboModetransport
     
    End Sub

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Le plus simple, c'est d'augmenter la portée de ta variable Donnée (As Worksheet)

    tu la déclares tout en haut de ton module de Userform

    tu crées la procédures ComboBox1_Change dans laquelle tu feras l'affectation de la feuille voulue sur ta variable Donnée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim Donnée As Worksheet
     
    Private Sub ComboBox1_Change()
        With Me.ComboBox1
             ' à adapter, c'est le cas où l'utilisateur écrit lui-même une feuille qui n'existe pas
            If .ListIndex = -1 Then
                Exit Sub
            Else
                Set Donnée = ThisWorkbook.Worksheets(.Value)
            End If
        End With
    End Sub
    Ainsi, ta variable donnée sera utilisable dans tes autres procédures
    Attention à bien tester si ta variable n'est pas Nothing lors de son utilisation

Discussions similaires

  1. [XL-2003] Copier deux feuilles de deux classeurs différents dans un troisième classeur
    Par jakfa dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/07/2013, 11h13
  2. Réponses: 0
    Dernier message: 15/11/2012, 19h47
  3. Supprimer une ligne sur deux feuilles du même classeur
    Par apdf1 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 12/03/2011, 12h28
  4. comparer deux feuilles du même classeur
    Par ririrourou dans le forum Macros et VBA Excel
    Réponses: 30
    Dernier message: 20/05/2008, 11h51
  5. fusionner deux feuilles de deux classeurs différents
    Par ririrourou dans le forum Macros et VBA Excel
    Réponses: 30
    Dernier message: 29/04/2008, 18h11

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