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 :

Autoriser une nouvelle saisie dans Combobox [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Par défaut Autoriser une nouvelle saisie dans Combobox
    Bonjour,
    Sur mon projet j'ai créé un petit USFde test contenant 2 Combobox à menu déroulant.
    Sur ce USF, j'ai placé un bouton de validation qui incrémente un tableau avec les données sélectionnées.
    Une fois appuyé sur ce bouton, j'ai une MsgBox qui demande à l'usager s'il veut faire une nouvelle saisie ou quitter.
    Mon souci est que je ne sais pas quel code écrire pour que lorsque l'usager clique sur "oui" il puisse ressaisir de nouvelles données.
    Voici mon code initial :
    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
    Private Sub CommandButton1_Click()
     
    With Worksheets(2)
    derlign = .Range("B1202").End(xlUp).Row + 1
                .Cells(derlign, 2).Value = ComboBox1
                .Cells(derlign, 3).Value = ComboBox2
    End With
     
    MsgBox "Créer une nouvelle demande", vbInformation + vbYesNo, "Nouvelle demande"
      If vbYes Then
          'je cherche l'instruction pour permettre une nouvelle saisie
      End If
      If vbNo Then
          Unload UserForm7
      End If
     
    End Sub
    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir Mikadoo57

    Citation Envoyé par mikadoo57 Voir le message
    Mon souci est que je ne sais pas quel code écrire pour que lorsque l'usager clique sur "oui" il puisse ressaisir de nouvelles données.
    Voici le code modifié
    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
    Private Sub CommandButton1_Click()
     
    With Worksheets(2)
    derlign = .Range("B1202").End(xlUp).Row + 1
                .Cells(derlign, 2).Value = ComboBox1
                .Cells(derlign, 3).Value = ComboBox2
    End With
     
    MsgBox "Créer une nouvelle demande", vbInformation + vbYesNo, "Nouvelle demande"
      If vbYes Then
          ' Effacer les combobox
          Me.ComboBox1.Value = ""
          Me.ComboBox2.Value = ""
          ' Sélectionner le premier combo
          Me.ComboBox1.SetFocus
      Else  ' Si ce n'est pas oui, c'est forcément Non
          Unload UserForm7
      End If
     
    End Sub
    Voili, voilà
    Dernière modification par Invité ; 10/01/2013 à 22h52.

  3. #3
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Par défaut
    OK, cela fonctionne mais j'ai du supprimer la ligne 15 qui faisait erreur.
    Par contre, si je clique sur "non" de la mesgbox, le USF reste visible!
    Je continue à creuser l'affaire

    Question subsidiaire: actuellement, la source des combobox est en rowsource des propriétés. Mais cela simple et facile mais c'est un peu limité surtout lorsqu'il faudra procéder à des modifications de cette source! Je cherche à désigner comme source l'une des listes de nom que j'ai créé, ce qui me simplifiera la vie car ces listes sont appelées à évoluer périodiquement.
    Merci

    Bon, je suis toujours dans le brouillard avec cette MsgBox.
    La macro butte toujours sur la ligne Me.ComboBox1.select avec le message "erreur de compilation, argument non facultatif"
    Si j'écris le code comme ci-dessous, que je clique sur Yes ou No, le résultat est le même : le USF se ferme
    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
    Dim ComboBox As Integer
     
    With Worksheets(2)
    derlign = .Range("B1202").End(xlUp).Row + 1
                .Cells(derlign, 2).Value = ComboBox1
                .Cells(derlign, 3).Value = ComboBox2
    End With
     
    MsgBox "Créer une nouvelle demande", vbInformation + vbYesNo, "Nouvelle demande"
      If vbYes Then
          Me.ComboBox1.Value = ""
          Me.ComboBox2.Value = ""
          'ComboBox1.Select 'je l'ai désactivé pour éviter le message "erreur de compilation"
          End If
        If vbNo Then
         Unload UserForm7
     End If
    Ma question précédente reste encore en suspend : comment lier une liste de noms (créée par insérer/nom/définir) à une Combobox zone de liste modifiable.
    Je ne trouve rien sur le net ni sur le site

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re,

    Désolé, ce n'est pas select pour un controle mais SetFocus
    Pour ce qui est de la RowSource tu peux la définir à l'initialisation de ton UsF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ComboBox1.RowSource = "='NomFeuille'!A2:A" & DLig

    DLig étant la variable qui récupère les dernière ligne remplie de ta colonne

    A+

  5. #5
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Par défaut
    OK pour la liste dans le menu déroulant mais le premier choix ne s'affiche pas !
    De plus il y a erreur 308 au moment de la validation.
    Je te joins une version light de mon fichier pour que tu vois la structure de mon projet. Merci pour ton aide.

    J'ai édité pour mettre un fichier sans la protec des macros !
    Fichiers attachés Fichiers attachés

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re,

    Normal la syntaxe n'est pas bonne

    Voici ton fichier avec le code modifié

    A+
    Fichiers attachés Fichiers attachés

  7. #7
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Par défaut
    Merci beaucoup car sans toi je n'aurai jamais trouvé la bonne syntaxe.
    Il ne me reste plus qu'à finir mon USF (5 combobox et 8 textbox!)
    Par contre, le USF reste toujours visible lorsque je clique sur NON dans la Msgbox

    Et m.... !
    Cela ne fonctionnait que parce que j'avais oublié d'enlever la rowsource dans les propriétés de la combobox.
    Maintenant que j'ai enlevé cette référence pour n'utiliser que celle qui est dans le USF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ComboBox1.RowSource = "='data'!B2:B" & DLig
    et ben il n'y a rien qui s'affiche dans le menu déroulant. Là, je commence à craquer

    J'ai tapé toutes les entrées de mon USF. Les textbox fonctionnent bien mais rien à faire pour les combobox : menu vide. Voici mon code complet (il n'y a pas de code attribués aux contrôles textbox et Combobox)
    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
    Option Explicit
     
    Private Sub CommandButton1_Click()
    Dim DLig As Long, NLig As Long
    ' Dernière Ligne remplie de la feuille data de la colonne B
    DLig = Sheets("data").Range("B" & Rows.Count).End(xlUp).Row
     
    'Emplacement de mes sources sur la feuille data
    Me.ComboBox1.RowSource = "='data'!B2:B" & DLig
    Me.ComboBox2.RowSource = "='data'!C2:C" & DLig
    Me.ComboBox3.RowSource = "='data'!H2:H" & DLig
    Me.ComboBox4.RowSource = "='data'!L2:L" & DLig
    Me.ComboBox5.RowSource = "='data'!K2:K" & DLig
     
    With Sheets("Activités")
      NLig = .Range("B1202").End(xlUp).Row + 1
      'colonne de destination des données saisies dans le USF
                .Cells(NLig, 2).Value = ComboBox1
                .Cells(NLig, 4).Value = ComboBox2
                .Cells(NLig, 9).Value = ComboBox2
                .Cells(NLig, 11).Value = ComboBox2
                .Cells(NLig, 12).Value = ComboBox2
                .Cells(NLig, 3).Value = TextBox1
                .Cells(NLig, 5).Value = TextBox2
                .Cells(NLig, 6).Value = TextBox3
                .Cells(NLig, 7).Value = TextBox4
                .Cells(NLig, 8).Value = TextBox5
                .Cells(NLig, 10).Value = TextBox6
                .Cells(NLig, 12).Value = TextBox7
                .Cells(NLig, 13).Value = TextBox8
     
    End With
     
    MsgBox "Créer une nouvelle demande", vbInformation + vbYesNo, "Nouvelle demande"
      If vbYes Then
          Me.ComboBox1.Value = ""
          Me.ComboBox2.Value = ""
          Me.ComboBox3.Value = ""
          Me.ComboBox4.Value = ""
          Me.ComboBox5.Value = ""
          Me.TextBox1.Value = ""
          Me.TextBox2.Value = ""
          Me.TextBox3.Value = ""
          Me.TextBox4.Value = ""
          Me.TextBox5.Value = ""
          Me.TextBox6.Value = ""
          Me.TextBox7.Value = ""
          Me.TextBox8.Value = ""
     
          ComboBox1.SetFocus
      Else
       UserForm7.Hide
     
     End If
    End Sub

  8. #8
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Par défaut
    Ouf ! j'ai enfin réussi à obtenir ce que je souhaitais. Un grand merci à Bruno dont le code de départ m'a bien aiguillé .
    Voici le code final (je suis preneur de toute suggestion pour l'alléger ou l'accélérer )
    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
    Option Explicit
     
    Private Sub quitter_Click() 'bouton pour quitter le USF
    Unload UserForm7
    End Sub
     
    Private Sub saisie_Click() 'bouton pour initialiser le USF
    Dim DLig As Long ', NLig As Long
    ' Dernière Ligne remplie de la feuille data de la colonne B
    DLig = Sheets("data").Range("C" & Rows.Count).End(xlUp).Row
     
    'Emplacement de mes sources sur la feuille data
    Me.ComboBox1.RowSource = "='data'!B2:B" & DLig
    Me.ComboBox2.RowSource = "='data'!C2:C" & DLig
    Me.ComboBox3.RowSource = "='data'!D2:D" & DLig
    Me.ComboBox4.RowSource = "='data'!F2:F" & DLig
    Me.ComboBox5.RowSource = "='data'!E2:E" & DLig
     
    End Sub
     
     
    Private Sub validation_Click() 'bouton pour valider les données du USF
    With Sheets("Activités")
    Dim Nlig As Long
      Nlig = .Range("B1202").End(xlUp).Row + 1
      'colonne de destination des données saisies dans le USF
                .Cells(Nlig, 2).Value = ComboBox1
                .Cells(Nlig, 4).Value = ComboBox2
                .Cells(Nlig, 9).Value = ComboBox3
                .Cells(Nlig, 11).Value = ComboBox4
                .Cells(Nlig, 12).Value = ComboBox5
                .Cells(Nlig, 3).Value = TextBox1
                .Cells(Nlig, 5).Value = TextBox2
                .Cells(Nlig, 6).Value = TextBox3
                .Cells(Nlig, 7).Value = TextBox4
                .Cells(Nlig, 8).Value = TextBox5
                .Cells(Nlig, 10).Value = TextBox6
                .Cells(Nlig, 12).Value = TextBox7
                .Cells(Nlig, 13).Value = TextBox8
     
    End With
     
    'réinitialise le USF pour une nouvelle saisie
    Me.ComboBox1.Value = ""
    Me.ComboBox2.Value = ""
    Me.ComboBox3.Value = ""
    Me.ComboBox4.Value = ""
    Me.ComboBox5.Value = ""
    Me.TextBox1.Value = ""
    Me.TextBox2.Value = ""
    Me.TextBox3.Value = ""
    Me.TextBox4.Value = ""
    Me.TextBox5.Value = ""
    Me.TextBox6.Value = ""
    Me.TextBox7.Value = ""
    Me.TextBox8.Value = ""
     
    ComboBox1.SetFocus
    End Sub

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

Discussions similaires

  1. [XL-2010] Ajout d'un champ pour nouvelle saisie dans une liste déroulante
    Par jerem56 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/03/2014, 10h29
  2. Debutant SQL : Comment inserer une nouvelle colonne dans une
    Par cquadjul dans le forum Langage SQL
    Réponses: 3
    Dernier message: 26/07/2005, 21h34
  3. Réponses: 2
    Dernier message: 23/04/2005, 13h29
  4. Réponses: 2
    Dernier message: 11/12/2004, 21h20
  5. [VB6] Ouverture d'une nouvelle fenêtre dans un MDI
    Par pepper dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 17/02/2003, 14h03

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