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 :

Récupération données d'un userform dans un module [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 8
    Par défaut Récupération données d'un userform dans un module
    Bonjour,

    Je voudrais créer une nouvelle feuille Excel grâce à VBA, qui serait en fait une nouvelle table d'une base de données.

    Pour cela j'ai un userform qui contient une combobox qui demande le type de feuille que je veux ajouter, pour "typer" la feuille. Par exemple on va voir les feuilles/tables de type "GEST_" suivi du nom de la table de gestion.

    Les types de feuilles sont répertoriés dans une feuille Excel appelée "GEST_TABLES_TYPE" , dont la colonne B contient le préfixe, comme " GEST_ " et la colonne C contient la signification du préfixe (par exemple "Table de gestion (permet de gérer les contraintes...)" ).

    Dans la combobox l'utilisateur voit la liste des significations de préfixes. Il rajoute le reste du nom de table dans un champ. Lorsqu'il appuie sur un bouton "OK", la valeur choisie dans la combobox est stockée dans une variable typet et la valeur entrée dans le champ, dans une variable desc. Jusque là pas de problème, normalement je peux récupérer les valeurs.

    Mais lorsque je fais un with sheets pour parcourir ma feuille de gestion de tables avec un for et if dedans, ça bloque au niveau du end if, et ça sans message d'erreur.

    Au début j'avais un message qui m'affichait "type d'argument byref incompatible". J'ai réalisé que j'avais mal déclaré certaines variables et j'ai réctifié cela, mais maintenant il n'y a plus d'erreur, juste un surlignage jaune sur le end if... Je n'avais pas mis de Else avant, mais je l'ai rajouté en pensant que ça changerait quelque chose.. Apparemment ça ne change rien..

    Voilà le code pour le userform :

    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
     
     
    Option Explicit
     
     
    Public prefixet As Variant
    Public desc As String
    Public Sub Bouton_OkTypeTable_Click()
     
            'déclaration de variables
            Dim typet As String
            Dim desc As String
            Dim prefixet As Variant
            Dim lig As Integer
            Dim drlig As Integer
     
            'récupération valeur choisie dans la combobox
            typet = COMBOBOX_TYPETABLE.Value
     
            'récupération valeur entrée dans la textbox
            desc = TEXTBOX_DESCTBL.Value
     
            'détermination du préfixe  à utiliser
            With Sheets("GEST_TABLES_TYPE")
     
                drlig = Sheets("GEST_TABLES_TYPE").Range("A1").End(xlDown).Row
     
                For lig = 2 To drlig
     
                    'si la signification du préfixe dans la feuille correspond à la signification choisie alors
                    If (typet = Sheets("GEST_TABLES_TYPE").Range("C" & lig).Value) = True Then
                        'récupérer le préfixe associé
                        prefixet = Sheets("GEST_TABLES_TYPE").Range("B" & lig).Value
                    Else
     
     
                    End If
     
                Next lig
     
     
            End With
     
     
     
            Add_Table desc, prefixet 'appel de la sub add_table
     
     
     
    End Sub
    Le userform appelle la fonction add_table située dans un module (option explicit a été écrit au debut du module) :

    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
     
     
    Sub Add_Table(ByRef tableUser As String, ByRef typetableUser As Variant)
        'Cette sub ajoute une table
        ' Déclaration des variables
        Dim nomTable As String
        Dim nomcomplet As String
        Dim typetable As Variant
     
     
        nomTable = tableUser
        typetable = typetableUser
     
     
         ' Attribue le nom choisi à la feuille
     
        nomcomplet = typetable & nomTable
        Sheets.Add
        ActiveSheet.Name = nomcomplet
     
     
    End Sub
    Pourriez-vous m'aider s'il vous plaît.. ? Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Bizarre, j'ai reproduit votre fichier et je n'obtiens pas de blocage. Le "Else" ne sert à rien, vous pouvez le supprimer.

    Cdlt

  3. #3
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour, quelle est donc la valeur de drlig? Il est possible que pour une raison indéterminée il y ait une erreur dans la boucle
    Cordialement

  4. #4
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 8
    Par défaut
    Citation Envoyé par Transitoire Voir le message
    Bonjour, quelle est donc la valeur de drlig? Il est possible que pour une raison indéterminée il y ait une erreur dans la boucle
    Cordialement
    La valeur de drlig était la bonne. J'ai relancé, je ne comprends pas pourquoi, maintenant ça fonctionne... Vraiment bizarre cette histoire.. Merci à vous

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

Discussions similaires

  1. [XL-2010] Problème de récupération d'une variable créée par un userform dans un module
    Par r.morel dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/08/2014, 17h21
  2. [XL-2007] Ajouter les donnée d'un userform dans la premiere ligne vide
    Par dodo28 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 31/07/2009, 00h12
  3. [XL-2003] Récupération données d'une ligne dans userform
    Par cantal15 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/06/2009, 15h52
  4. Utiliser variables d'une userform dans un module
    Par dahuhunter dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/02/2009, 20h26
  5. Réponses: 3
    Dernier message: 29/08/2006, 16h02

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