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 :

Declarer un tableau a en tetes dans un userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Par défaut Declarer un tableau a en tetes dans un userform
    Bonjour à tous. Je me permets de vous solliciter dans le cadre de la creation d'un userform de saisie.

    Ce dernier a pour but d'alimenter un tableau, qui me servira par la suite de base à analyser via un tableau croisé dynamique.

    L'userform est majoritairement composé d'optionbutton, et de quelques textbox/combobox.
    Je rencontre une difficulté inattendue:

    Je me suis rendu compte que j'avais complètement oublié de créer mon tableau avec des en têtes (30 colonnes, + de 5000 lignes). Mon code quasiment terminé, j'ai inséré mon tableau et là, surprise:
    mon code fonctionne pas dans le tableau, les résultats de l'userform s'inscrivent à après la dernière ligne... :shock:

    Qu'ai je raté?

    Voici 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
    Option Explicit
     
    Dim Ws As Worksheet
     
    Private Sub CommandButton1_Click()
    Unload Me
    End Sub
     
    Private Sub Frame18_Click()
     
    End Sub
     
    Private Sub Userform_Initialize()
     
     
    Set Ws = Sheets("Centralisation simple")
    ComboBox2.RowSource = ("Jour")
    ComboBox3.RowSource = ("Mois")
    End Sub
    Private Sub CommandButton2_Click()
     
    Label1.ForeColor = RGB(0, 0, 0)
    Label2.ForeColor = RGB(0, 0, 0)
    Label3.ForeColor = RGB(0, 0, 0)
    Label4.ForeColor = RGB(0, 0, 0)
     
    Label18.ForeColor = RGB(0, 0, 0)
    Label19.ForeColor = RGB(0, 0, 0)
     
    Label21.ForeColor = RGB(0, 0, 0)
    Label22.ForeColor = RGB(0, 0, 0)
    Label23.ForeColor = RGB(0, 0, 0)
    Label59.ForeColor = RGB(0, 0, 0)
    Label62.ForeColor = RGB(0, 0, 0)
     
    'Contrôles de contenu
    If TextBox1.Value = "" Then 'SI pas de "nom" ...
    Label1.ForeColor = RGB(255, 0, 0) 'Label "nom" en rouge
    ElseIf TextBox2.Value = "" Then
    Label2.ForeColor = RGB(255, 0, 0)
     
    ElseIf ComboBox2.Value = "" Then
    Label3.ForeColor = RGB(255, 0, 0)
     
    Else
    'Si formulaire est complet
    Dim no_ligne As Integer
     
    no_ligne = Range("A65536").End(xlUp).Row + 1
     
    Cells(no_ligne, 1) = TextBox1
    Cells(no_ligne, 2) = TextBox2
    Cells(no_ligne, 3) = ComboBox2
    Cells(no_ligne, 4) = IIf(Me.OptionButton1 = True, "Oui", "Non")
    Cells(no_ligne, 4) = IIf(Me.OptionButton3 = True, "Oui", "Non")
    Cells(no_ligne, 7) = IIf(Me.OptionButton5 = True, "Correcte", "Incorrecte")
    Cells(no_ligne, 6) = TextBox3
    Cells(no_ligne, 8) = IIf(Me.OptionButton7 = True, "Correctes", "Incorrectes")
    Cells(no_ligne, 9) = IIf(Me.OptionButton9 = True, "Oui", "Non")
    Cells(no_ligne, 10) = ComboBox3
    Cells(no_ligne, 11) = IIf(Me.OptionButton11 = True, "Oui", "Non")
    Cells(no_ligne, 12) = IIf(Me.OptionButton13 = True, "Oui", "Non")
    Cells(no_ligne, 13) = IIf(Me.OptionButton15 = True, "Oui", "Non")
    Cells(no_ligne, 14) = IIf(Me.OptionButton17 = True, "Oui", "Non")
    Cells(no_ligne, 15) = IIf(Me.OptionButton19 = True, "Oui", "Non")
     
     
     
    TextBox1 = ""
    TextBox2 = ""
    ComboBox2 = ""
    TextBox3 = ""
    ComboBox3 = ""
    OptionButton1 = ""
    OptionButton2 = ""
    OptionButton3 = ""
    OptionButton4 = ""
    OptionButton5 = ""
    OptionButton6 = ""
    OptionButton7 = ""
    OptionButton8 = ""
    OptionButton9 = ""
    OptionButton10 = ""
    OptionButton11 = ""
    OptionButton12 = ""
    OptionButton13 = ""
    OptionButton14 = ""
    OptionButton15 = ""
    OptionButton16 = ""
    OptionButton17 = ""
    OptionButton18 = ""
    OptionButton19 = ""
    OptionButton20 = ""
    End If
    End Sub
    Je n'ai peut être pas assez cherché, je le reconnais, mais je suis sur ce projet depuis hier 7H du mat.... Merci de votre compréhension.

  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,

    c'est pas très clair
    je n'ai rien compris à l'histoire du tableau qui a été oublié

    cette ligne de code calcule la première ligne non vide de la feuille active :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    no_ligne = Range("A65536").End(xlUp).Row + 1
    A part te préciser ça, je ne vois pas très bien quel est ton problème et ce que tu souhaites en réalité faire.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Par défaut
    Bonjour et merci pour ce retour.
    Je debute sur excel, veuillez m excuser si ce n est pas tres clair.
    Voici ma problematique: si j ai bien compris, la ligne de code citée dans le précédent message permet, apres validation, d'inscrire les données renseignées dans l userform dans la derniere ligne non vide de la feuille. Lorsque la feuille est vierge, c est a dire lorsque je n ai pas inséré de tableau a en tetes, le code fonctionne parfaitement. En revanche, des lors ou un tableau a été inséré, lorsque j utilise l userform, les résultats ne s inscrivent pas dans le tableau, mais sur la premiere ligne qui le suit. C est comme si l ensemble des lignes du tableau, meme si elles sont vides, étaient considérées comme non vides... Ex: mon tableau inséré comporte 5000 lignes ( la 5000 etant la ligne finale), aucune donnée n est renseignée, lorsque j utilise l usf, le résultat s inscrit sur la ligne 5001...

    J espere avoir ete un peu plus clair

  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
    Je dois dire que je n'avais jamais remarqué ce phénomène ... il est vrai que j'ai pas l'habitude de créer un tableau structuré (Objet ListObject en VBA) vide pour ensuite le remplir

    Il est préférable, si tu pars d'une feuille vierge, de :

    - créer tes en-têtes
    - insérer tes valeurs du Userform à la suite
    - à la fin du traitement, convertir la plage en Tableau structuré (avec l'enregistreur de macro t'aura la méthode quasiment toute prête)

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Par défaut
    Merci pour ce retour et bon dimanche !

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

Discussions similaires

  1. [XL-2003] tableau de MSForms.TextBox dans un UserForm - Impossible d'accedere à la Valeur
    Par langeard dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/06/2011, 17h29
  2. Réponses: 13
    Dernier message: 27/12/2005, 09h17
  3. Un tableau toujours en haut dans une cellule
    Par Furius dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/12/2005, 12h21
  4. Réponses: 6
    Dernier message: 23/09/2005, 12h54
  5. [JVM][Tableau] ca travaille bien dans la RAM ?
    Par ShinJava dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 03/01/2005, 12h00

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