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 :

Insertion ligne dans "zone de liste modifiable" [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Bonjour à tous,

    J'ai crée un userform dans lequel j'ai inséré une "zone de liste modifiable". Je souhaiterai maintenant remplir cette zone de liste par la plage cellule suivante
    (F1:MM1). C'est à dire une grande partie de la ligne 1.

    Je souhaiterai que ce qui se trouve dans ces cellules (en l'occurence des chaine de caractère étant des titres) soient insérés dans cette "zone de liste modifiable".

    L'objectif serait de de pouvori cliquer sur un des objets de la liste et que dans la feuille suivante (feuille7) il affiche la colonne correspondante.

    Merci à ceux qui voudront bien me donner un coup de main. Et n'hésitez pas à me faire remarquer si je n'ai pas été assez claire.

    Merci beaucoup de votre aide

    Bien à vous

    Ron

    re,

    Est ce normal que rien ne s'affiche dans ma liste déroulante avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ComboBox1_Change()
    ComboBox1.RowSource = "Feuil1!F1:MM1"
    End Sub
    Merci de votre aide.

    rON

  2. #2
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour,
    Je souhaiterai maintenant remplir cette zone de liste par la plage cellule suivante
    (F1:MM1). C'est à dire une grande partie de la ligne 1.
    Il faut initializer ta combobox au démarrage de l'userform. Une des façons est celle ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
    For Each cel In Sheets("Feuil1").Range("F1:MM1")
      Me.ComboBox1.AddItem cel.Value
    Next cel
    End Sub
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Merci pour votre aide rvtoulon. J'ai initialisé et crée un userform comprenant une "listbox" affichant les titres des colonnes qui m'intéresent.

    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
    Private Sub UserForm_Initialize()
     
    Dim i As Integer
     
    Dim oSh2 As Excel.Worksheet
    Set oSh2 = ThisWorkbook.Worksheets("Feuil6")
     
    i = 6
     
    While oSh2.Cells(1, i) <> ""
      ListBox1.AddItem (oSh2.Cells(1, i))
      i = i + 1
    Wend
     
    End Sub
    Je souhaiterai maintenant lorsque je clique sur un de ces "titres" (1ere cellule d'une colonne) que sur la feuille suivante apparaisse la colonne correspondante au nom de la cellule sur laquelle j'ai cliqué. Suis je assez claire ?

    Merci

    Bonne journée

    Ron

  4. #4
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour,
    maintenant il faut utiliser les événements du contrôle listbox. Tu peux utiliser l'événement change et utiliser la méthode find pour trouver le nom recherché :
    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
    Private Sub ListBox1_Change()
    Dim vval As String, vrech As Range
     
    vval = Me.ListBox1.Value
     
    'je rech la valeur sélectionnée dans la feuille 7 ligne 1
    Set vrech = Sheets("Feuil7").Rows(1).Find(vval)
     
      If Not vrech Is Nothing Then
        'ferme le userform
        Unload Me
     
        'Active la feuille 7
        Sheets("Feuil7").Activate
     
        'Selectionne toute la colonne du nom recherché
        vrech.EntireColumn.Select
      Else
        MsgBox "Il n'y a pas de colonne qui porte ce nom"
      End If
     
    End Sub
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Re,

    Merci beaucoup mais il y'a une erreur de type 1004 , la "méthode select de la classe range a échoué".
    Il me surligne ensuite en jaune la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vrech.EntireColumn.Select
    Une idée ?

    Ps : Les valeurs que je séléctionne dans la listbox sont en réalité dans la ligne 1 de la feuille 6. En ligne 7 j'ai juste remplacé le feuil7 par feuil6.

    Merci de votre aide
    Ron

  6. #6
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Je souhaiterai maintenant lorsque je clique sur un de ces "titres" (1ere cellule d'une colonne) que sur la feuille suivante apparaisse la colonne correspondante au nom de la cellule sur laquelle j'ai cliqué
    Je suis parti sur l'hypothèse ou sur la première ligne de la feuille 7 on retrouvait les noms ou titres.

    si je comprend bien ceci doit faire l'affaire :
    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
    Private Sub ListBox1_Change()
    Dim vval As String, vrech As Range
    vval = Me.ListBox1.Value
    'je rech la valeur sélectionnée dans la feuille 6 ligne 1
    Set vrech = Sheets("Feuil6").Rows(1).Find(vval)
      If Not vrech Is Nothing Then
        'ferme le userform
        Unload Me
     
        'Active la feuille 7
        Sheets("Feuil7").Activate
     
        'Selectionne toute la colonne du nom recherché
        ActiveSheet.Columns(vrech.Column).Select
      End If
    End Sub
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup rvtoulon, cela fonctionne parfaitement. Je trouve ce forum particulièrement performant, je suis impressionné.

    Merci à vous.

    A bientôt.

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

Discussions similaires

  1. sélectionner une ligne dans une zone de liste modifiable
    Par stagolee dans le forum VBA Access
    Réponses: 4
    Dernier message: 19/11/2007, 14h07
  2. Réponses: 1
    Dernier message: 08/09/2006, 05h25
  3. Réponses: 6
    Dernier message: 06/09/2006, 14h50
  4. Réponses: 2
    Dernier message: 12/04/2006, 10h00
  5. Réponses: 2
    Dernier message: 17/02/2005, 00h00

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