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 :

Copie d'une zone Excel dans une liste d'un UserForm


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Finance

    Informations forums :
    Inscription : Août 2022
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Copie d'une zone Excel dans une liste d'un UserForm
    Bonjour à tous,

    j'ai besoin d'une âme charitable pour m'aider à finaliser mon fichier...

    Je suis en train de concevoir un fichier avec 2 userforms (ajout et modification) qui semblent fonctionner pour le moment.

    Je rajoute une troisième userform qui me servirait uniquement pour les recherches en affichant dans une liste le résultat attendu
    en regardant les tutos sur internet, j'ai créé sur un nouvel onglet une copie filtrée de ma base mais cette dernière ne se recopie pas dans la liste de la userform...

    Ce sont les lignes 14-17 qui me posent souci

    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
    Option Compare Text
    Dim bddfeuil1, plagefeuil5, critere
     
    Private Sub TextBox1_Change()
     
    Feuil5.Cells.Clear
    Feuil5.[AA1] = bddfeuil1.Cells(1, critere)
    Feuil5.[AA2] = Me.TextBox1.Value
     
    Feuil1.[A1].CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
    criteriarange:=Feuil5.[AA1:AA2], _
    copytorange:=Feuil5.[A1], Unique:=False
     
    If Feuil5.[A1].CurrentRegion.Row.Count > 1 Then
        Set plagefeuil5 = Feuil5.[A1].curentregion.Offset(1).Resize(Feuil5.[A1].CurrentRegion.Rows.Count - 1)
        Me.ListBox1.RowSource = plagefeuil5.adress(external:=True)
    End If
     
    End Sub
     
     
    Private Sub userform_initialize()
     
    ComboBox1.List = WorksheetFunction.Transpose(Feuil1.Range("A1:T1"))
     
    End Sub
     
    Private Sub CommandButton3_Click()
    Unload Me
    End Sub
     
    Private Sub ComboBox1_Change()
     
    For col = 1 To 20
     
        If Feuil1.Cells(1, col).Value = Me.ComboBox1.Value Then
            critere = col
        End If
    Next
    Set bddfeuil1 = Feuil1.[A1].CurrentRegion
    Me.ListBox1.ColumnCount = Feuil1.[A1].CurrentRegion.Columns.Count
    Me.ListBox1.ColumnWidths = "5;5;5;5;5;5;5;5;5;5;5;5;5;5;5;5;5;5;5;5"
    Me.ListBox1.ColumnHeads = True
    Me.TextBox1.Text = ""
    Me.TextBox1.SetFocus
     
    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
    12 884
    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 : 12 884
    Points : 28 840
    Points
    28 840
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je repère deux erreurs dans les lignes 14 et 15.
    Ligne 14, c'est Rows.Count et pas Row.Count
    Ligne 15, il faut deux "r" à CurrentRegion
    Il y en a peut-être d'autres mais je n'ai pas été plus loin

    Evitez les annotations comme Feuil5.[A1] et préférez Feuil5.Range("A1"), je sais que sur certains sites, c'est monnaie courante mais c'est une mauvaise pratique.
    Si vous avez l'occasion, je vous invite à consulter sur ce sujet, le billet de Pierre Fauconnier titré VBA-Excel: Notation raccourcie d'une plage, une fausse bonne idée!

    Petite suggestion, renommez le CodeName de vos feuilles par un nom explicite car Feuil5, cela n'est pas très "parlant"
    A lire éventuellement mon billet titré VBA Excel - Comment s’affranchir de la modification du nom de la feuille en utilisant son CodeName
    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
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Finance

    Informations forums :
    Inscription : Août 2022
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour votre oeil d'expert...
    Serait-ce abusé de vous demander de regarder la ligne juste en dessous?

    "err 438 propriété ou méthode non gérée par cet objet"

    Avec mes plus sincères remerciements

  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
    12 884
    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 : 12 884
    Points : 28 840
    Points
    28 840
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Serait-ce abusé de vous demander de regarder la ligne juste en dessous?
    Address prend deux d

    Ce genre d'erreur ne devrait pas arriver parce-qu'en insérant le "." vous avez une liste déroulante (ce que l'on appelle l'intellisense) qui vous propose la liste des propriétés et méthodes liés à l'objet que vous utilisez.
    Il suffit alors de faire un double clic sur l'objet ou propriété à insérer ou encore appuyer sur la touche Tabulation si celui-ci est en sélection pour l'insérer sans faute d'orthographe.

    Illustration

    Nom : 220811 Intellisense.png
Affichages : 207
Taille : 7,6 Ko
    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
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Finance

    Informations forums :
    Inscription : Août 2022
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Un grand merci grâce à vous je touche le bout ENFIN!!!!

    il me reste une dernière chose à régler si vous permettez...

    Lorsque je lance la procédure de mon userform via le visual basic (flèche verte) l'alimentation de la feuille Excel (bdd) fonctionne ; mais qd je lance via un bouton inséré sur une feuille Excel j'ai juste l'affichage du userform et si je fais une saisie elle ne s'enregistre pas.

    un bouton appelle une macro du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub appeluserform1
    userform1.show
    end sub
    et ainsi de suite

    Manque t-il un élément ici encore?

  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
    12 884
    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 : 12 884
    Points : 28 840
    Points
    28 840
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Normalement, il n'y a aucune raison que cela fonctionne dans un cas et pas dans l'autre mais sans doute ne donnez vous pas toutes les explications car ce que vous écrivez
    un bouton appelle une macro du genre
    sub appeluserform1
    userform1.show
    end sub

    et ainsi de suite
    Le "du genre" et "et ainsi de suite" sont pour le moins imprécis.

    Avez-vous placé le code qui invoque le UserForm dans un module Standard ?

    Une republication du code corrigé, placé entre les balises prévues à cet effet. Ainsi que le code qui invoque le UserForm en séparant bien avec un titre indiquant Code dans le module UserForm nommé, par exemple, "UserForm1" et Code dans le module standard serait très apprécié.

    Plus vous serez précis plus les réponses que l'on vous apportera seront pertinentes
    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

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Finance

    Informations forums :
    Inscription : Août 2022
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Tout d'abord je vous remercie encore pour le temps que vous m'accordez.

    je travaille donc dans un classeur Excel avec 5 onglets.
    - accueil : c'est sur cette page que j'aimerais avoir 4 boutons pour appeler mes 4 userforms
    - bdd1 : contient les enregistrements du userform1
    - filtrage bdd1 : sert à alimenter la liste du userform3 (recherche)
    - bdd2 : contient les enregistrements du userform2
    - filtrage bdd2 : sert à alimenter la liste du userform4 (recherche) - pas encore fait

    Le fonctionnement étant le même partons sur le userform1

    Voici ma partie "module" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub appeluserform1()
    userform1.show
    end sub
    partie userform qui fonctionne quand lancée via la flèche verte du VB mais pas qd on appelle via le bouton (bdd non alimentée)

    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
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    Private Sub ComboBox7_Change()
     
    Dim onglet As Worksheet
    Dim derniere_ligne As Long
    Dim reference As String
     
    Set onglet = Worksheets("RJ")
        derniere_ligne = onglet.Cells(Rows.Count, 1).End(xlUp).Row
     
    If ComboBox7.Value = "" Then
        Unload UserForm1
        UserForm1.Show
    Else
    reference = ComboBox7.Value
     
    For i = 2 To derniere_ligne
    If onglet.Cells(i, 8) = reference Then
     
    'Cells(derniere_ligne + 1, 2) =
    ComboBox1.Value = onglet.Cells(i, 2)
    ComboBox2.Value = onglet.Cells(i, 3)
    TextBox1.Value = onglet.Cells(i, 4)
    TextBox11.Value = onglet.Cells(i, 5)
    Nom.Value = onglet.Cells(i, 6)
    Prenom.Value = onglet.Cells(i, 7)
    'Concatenate pour recherche
    TextBox2.Value = onglet.Cells(i, 9)
    TextBox3.Value = onglet.Cells(i, 10)
    TextBox4.Value = onglet.Cells(i, 11)
    ComboBox3.Value = onglet.Cells(i, 12)
    TextBox5.Value = onglet.Cells(i, 13)
    ComboBox4.Value = onglet.Cells(i, 14)
    TextBox7.Value = onglet.Cells(i, 15)
    'calcul date surveillance
    TextBox12.Value = onglet.Cells(i, 17)
    ComboBox5.Value = onglet.Cells(i, 18)
    ComboBox6.Value = onglet.Cells(i, 19)
    TextBox6.Value = onglet.Cells(i, 20)
     
    End If
    Next
     
    End If
     
    End Sub
     
     
     
    Private Sub userform_initialize()
     
    Dim onglet As Worksheet
    Dim derniere_ligne As Long
    Dim arr_data As Variant
     
    Set onglet = Worksheets("RJ")
        derniere_ligne = onglet.Cells(Rows.Count, 1).End(xlUp).Row
     
    If derniere_ligne > 1 Then
    arr_data = onglet.Range(onglet.Cells(2, 8), onglet.Cells(derniere_ligne, 8))
     
    'With Me.ComboBox7
    '.ColumnCount = 8
    '.ColumnWidths = "30;0;0;0;0;0;0;75"
    'End With
     
    ComboBox7.List = arr_data
     
     
    End If
     
    'With Sheets("RJ")
    'Dim i As Integer
    'i = 2
    'Do While Worksheets("RJ").Cells(i, 1) <> 0
    'ComboBox7.AddItem Sheets("RJ").Cells(i, 8)
    'i = i + 1
    'Loop
    'ComboBox7.ListIndex = 0
    'End With
     
    With ComboBox1
    .AddItem ""
    .AddItem "Client Suivi LCBFT"
    .AddItem "Réquisition Judicaire"
    End With
     
    With ComboBox2
    .AddItem ""
    .AddItem "Enquête Préliminaire"
    .AddItem "Client Suivi"
    End With
     
    With ComboBox3
    .AddItem ""
    .AddItem "Abeille Vie"
    .AddItem "Abeille Retraite Professionnelle"
    .AddItem "Abeille Epargne Retraite"
    .AddItem "ALPIDAC"
    End With
     
    With ComboBox4
    .AddItem ""
    .AddItem "Oui"
    .AddItem "Non"
    End With
     
    With ComboBox5
    .AddItem ""
    .AddItem "Oui"
    .AddItem "Non"
    End With
     
    With ComboBox6
    .AddItem ""
    .AddItem "Anthony GIOVANNOLI"
    .AddItem "Mona FOUDA"
    .AddItem "Sarah TIDJANI"
    .AddItem "Stéphane SEBELOUE"
    End With
     
    TextBox1.Value = DateValue(Format(Date, "dd/mm/yyyy"))
     
    End Sub
     
    Private Sub Quitter_Click()
    Unload Me
    End Sub
     
    Private Sub Ajouter_Click()
    'Bouton Ajouter
     
    Dim onglet As Worksheet
    Dim derniere_ligne As Long
    Dim reference As String
    Dim modification As Boolean
     
    If ComboBox7.Value = "" Then
        modification = False
    Else
        modification = True
    End If
     
    Set onglet = Worksheets("RJ")
        derniere_ligne = onglet.Cells(Rows.Count, 1).End(xlUp).Row
     
    If modification = False Then
     
            If derniere_ligne = 1 Then
                reference = 1
            Else
            reference = onglet.Cells(derniere_ligne, 1) + 1
            End If
     
            With onglet
     
            Cells(derniere_ligne + 1, 1) = reference
            Cells(derniere_ligne + 1, 2) = ComboBox1.Value
            Cells(derniere_ligne + 1, 3) = ComboBox2.Value
            Cells(derniere_ligne + 1, 4) = DateValue(Format(Date, "dd/mm/yyyy"))
            If TextBox11.Value <> "" Then
            Cells(derniere_ligne + 1, 5) = CDate(TextBox11.Value)
            End If
            Cells(derniere_ligne + 1, 6) = Nom.Value
            Cells(derniere_ligne + 1, 7) = Prenom.Value
            'Concatenate pour recherche
            If TextBox2.Value <> "" Then
            Cells(derniere_ligne + 1, 9) = CDate(TextBox2.Value)
            End If
            Cells(derniere_ligne + 1, 10) = TextBox3.Value
            Cells(derniere_ligne + 1, 11) = TextBox4.Value
            Cells(derniere_ligne + 1, 12) = ComboBox3.Value
            Cells(derniere_ligne + 1, 13) = TextBox5.Value
            Cells(derniere_ligne + 1, 14) = ComboBox4.Value
            If TextBox7.Value <> "" Then
            Cells(derniere_ligne + 1, 15) = CDate(TextBox7.Value)
            End If
            'calcul date surveillance
            If TextBox12.Value <> "" Then
            Cells(derniere_ligne + 1, 17) = CDate(TextBox12.Value)
            End If
            Cells(derniere_ligne + 1, 18) = ComboBox5.Value
            Cells(derniere_ligne + 1, 19) = ComboBox6.Value
            Cells(derniere_ligne + 1, 20) = TextBox6.Value
     
            End With
     
     
     
    Else
    reference = ComboBox7.Value
     
    For i = 2 To derniere_ligne
    If onglet.Cells(i, 8) = reference Then
     
            'Cells(derniere_ligne + 1, 2) =
            onglet.Cells(i, 2) = ComboBox1.Value
            onglet.Cells(i, 3) = ComboBox2.Value
            onglet.Cells(i, 4) = DateValue(Format(Date, "dd/mm/yyyy"))
            If TextBox11.Value <> "" Then
            onglet.Cells(i, 5) = CDate(TextBox11.Value)
            Else: onglet.Cells(i, 5) = ""
            End If
            onglet.Cells(i, 6) = Nom.Value
            onglet.Cells(i, 7) = Prenom.Value
            'Concatenate pour recherche
            If TextBox2.Value <> "" Then
            onglet.Cells(i, 9) = CDate(TextBox2.Value)
            Else: onglet.Cells(i, 9) = ""
            End If
            onglet.Cells(i, 10) = TextBox3.Value
            onglet.Cells(i, 11) = TextBox4.Value
            onglet.Cells(i, 12) = ComboBox3.Value
            onglet.Cells(i, 13) = TextBox5.Value
            onglet.Cells(i, 14) = ComboBox4.Value
            If TextBox7.Value <> "" Then
            onglet.Cells(i, 15) = CDate(TextBox7.Value)
            Else: onglet.Cells(i, 15) = ""
            End If
            'calcul date surveillance
            If TextBox12.Value <> "" Then
            onglet.Cells(i, 17) = CDate(TextBox12.Value)
            Else: onglet.Cells(i, 17) = ""
            End If
            onglet.Cells(i, 18) = ComboBox5.Value
            onglet.Cells(i, 19) = ComboBox6.Value
            onglet.Cells(i, 20) = TextBox6.Value
     
     
            End If
    Next
     
    End If
     
    Unload UserForm1
    UserForm1.Show
     
    End Sub

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 884
    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 : 12 884
    Points : 28 840
    Points
    28 840
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pourriez-vous placer votre code entre les balises prévues à cet effet (voir animation) ?

    En relisant vos derniers "post", je ne suis pas certain d'avoir bien compris votre problème.
    Est-ce l'alimentation d'une liste (ComboBox) qui ne fonctionne pas ou l'écriture dans Excel des données introduites dans le UserForm ?

    Même si ce n'est pas le souci que vous rencontrez, je vois déjà quelques anomalies
    1. Vous expliquez que vous avez cinq onglets nommés respectivement accueil, bdd1, filtrage bdd1, bdd2 et filtrage bdd2 donc je ne comprends pas la ligne de code dans la procédure événementielle UserForm_Initialize Set onglet = Worksheets("RJ"). Si cette feuille n'existe pas, vous devriez avoir une erreur.
    2. Dans plusieurs procédures (au moins deux), vous avez ces deux lignes de code pour le moins curieuses
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      Unload UserForm1
      UserForm1.Show
      Vous fermez le UserForm pour le réafficher ?




    Nom : dvp Editeur Balises Code.gif
Affichages : 187
Taille : 24,2 Ko
    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

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Finance

    Informations forums :
    Inscription : Août 2022
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    onglet 1 : "Accueil"
    onglet 2 : "RJ"
    onglet 3 : "Filtrage RJ" sera masqué
    onglet 4 : "ERDS"
    onglet 5 : "Filtrage ERDS" sera masqué

    Mon dernier souci est l'alimentation des bdd de ma feuille Excel (onglet 2 et 4) qui pour une raison qui m'échappe ne fonctionne pas toujours (surtout si lancée via les boutons de la page d'accueil).

    Je cherche à faire fonctionner la partie RJ et j'appliquerai ensuite la même chose pour les onglets 4 et 5.


    Le "unload" suivi d'un "show" arrive après la validation (clic sur le bouton) pour vider le formulaire et afficher à nouveau pour une nouvelle saisie

    Fichier Propal Thomas.xlsm

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 884
    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 : 12 884
    Points : 28 840
    Points
    28 840
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comme je l'avais indiqué, il n'est pas normal que cela fonctionne dans un cas et pas dans l'autre.
    A mon avis quand vous lancez directement le UserForm depuis l'éditeur VBA, votre feuille nommée RJ est active donc les cellules sont bien alimentées

    L'erreur se trouve notamment dans l'une de vos procédures nommée Ajouter_Click mais il doit y en avoir d'autres.

    Vous avez un bloc With...End With que vous n'utilisez pas correctement

    Voici un extrait de quelques une de vos lignes de code que j'ai indenté afin de la rendre lisible
    Vous avez omis de placer un point devant chaque objet Cells ce qui fait que ces objets par défaut font partie de la feuille active et pas de la feuille "RJ" représentée par la variable objet nommée onglet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    With onglet
      Cells(derniere_ligne + 1, 1) = reference
      Cells(derniere_ligne + 1, 2) = ComboBox1.Value
      Cells(derniere_ligne + 1, 3) = ComboBox2.Value
      Cells(derniere_ligne + 1, 4) = DateValue(Format(Date, "dd/mm/yyyy"))
      If TextBox11.Value <> "" Then
          Cells(derniere_ligne + 1, 5) = CDate(TextBox11.Value)
      End If
    ...........
    ...........
    End With
    Petit exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub t()
      Dim sht As Worksheet
      Set sht = Worksheets("Data")
      With sht
      .Range("A2").Value = "Monsieur"
      .Range("B2").Value = "Dupond"
      .Range("C2").Value = "Rue de la programmation, 12"
      End With
      Set sht = Nothing
    End Sub
    Même exemple avec l'objet Cells
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub t()
      Dim sht As Worksheet
      Dim Ligne As Long
      Set sht = Worksheets("Data")
      Ligne = 2
      With sht
      .Cells(Ligne, 1).Value = "Monsieur"
      .Cells(Ligne, 2).Value = "Dupond"
      .Cells(Ligne, 3).Value = "Rue de la programmation, 12"
      End With
      Set sht = Nothing
    End Sub
    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

Discussions similaires

  1. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 17h01
  2. [XL-2003] VBA - Copie d'une feuille dans un fichier Texte
    Par cycy75 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/02/2010, 15h38
  3. Réponses: 1
    Dernier message: 28/03/2007, 11h38
  4. [VBA] Copy d'une selection dans Word
    Par marsupoilu dans le forum VBA Word
    Réponses: 1
    Dernier message: 04/07/2006, 09h27
  5. [VBA] Copie d'une feuille (avec graphique)
    Par ed_dexia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/10/2005, 09h56

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