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 :

[VBA]Combobox création et suppression nom [XL-2002]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 830
    Par défaut [VBA]Combobox création et suppression nom
    Bonsoir,

    J'ai un petit problème avec une ComboBox dans un UserForm.

    Cet UserForm comprend :
    1° - un CommandButton qui permet de créer un client et nommer le champ avec le code suivant

    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
    Private Sub CommandButton1_Click()
    Worksheets("Commandes").Activate
    FeuilleActive = ActiveSheet.Name
    Application.ScreenUpdating = False
        NomClient = Application.InputBox("Saisir le Nom du client", ClasseurActif)
        If NomClient = "" Then Exit Sub
        Columns(1).Cells.Find("*", [A1], , , , xlPrevious).Offset(1, 0).Select 'la dernière cellule dans la colonne A + 1
        ActiveCell = NomClient
        NomClient1 = LCase(Replace(NomClient, " ", "_"))
        ActiveWorkbook.Names.Add Name:=LCase(Replace(NomClient1, "-", "_")), RefersToR1C1:=Range(ActiveCell, ActiveCell.Offset(0, 9))
        Worksheets("Liste noms").Activate
        Columns(1).Cells.Find("*", [A1], , , , xlPrevious).Offset(1, 0) = NomClient
        Range("A2", Selection.End(xlDown)).Select
        Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
        Worksheets(FeuilleActive).Activate
    Application.ScreenUpdating = True
    End Sub
    Jusque la tout va bien

    2° - un Combobox qui utilise RowSource «liste_noms» dans la feuille "Liste noms" et permet de supprimer un client avec le code suivant

    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 ComboBox2_Change()
    NomClient2 = LCase(Replace(ComboBox2.Value, " ", "_"))
    NomClient3 = LCase(Replace(NomClient2, "-", "_"))
    'MsgBox NomClient3
    'MsgBox "phase suppression chantier"
        Application.ScreenUpdating = False
            Application.Goto Reference:="données"
            On Error Resume Next
            Range(NomClient3).Select
            Selection.EntireRow.Delete
            ActiveWorkbook.Names(NomClient3).Delete
            Sheets("Liste noms").Cells.Find(What:=ComboBox2, After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False).EntireRow.Delete
            AppActivate "Microsoft Excel"
            ComboBox2 = "Supprimer un clients"
        Application.ScreenUpdating = True
    End Sub
    La çà fonctionne moins bien, car si le choix du client a supprimer est «DARDAR» dans la ComboBox pour une liste comportant les noms «DARDAR, DUPONT, DURAND, DUPUIS», les noms «DARDAR» et «DUPONT» seront supprimés et pas les autres, je ne comprend pas le pourquoi et comment ?

    Je n’ai pas trouvé de réponse sur internet.

    Une aide et une explication seraient appréciables.

    Merci d’avance.
    Cordialement modus57

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 830
    Par défaut
    Bonjour à tous.

    Je reviens sur ce fil, car je n’ais pas trouvé de solution.

    Une explication complémentaire, j’ai une petite application a faire pour une association le terme «adhérent» est mieux approprié qu’au terme «client». Voici le principe de fonctionnement.

    Le classeur contient 2 feuilles :
    - l’une nommée « Commandes » qui contient un nom défini nommé «données» représentant la zone en cours. Celle-ci est une plage limitée par toute combinaison de lignes et de colonnes vides

    - l’autre nommée «Liste noms» qui contient un nom défini nommé «liste_noms» représentant la RowSource du «ComboBox»

    Et un UserForm qui comprend :
    - un CommandButton qui permet de créer un adhérent dans la dernière cellule non vide de la colonne A de la feuille «Commandes» et défini le nom du champ de cet adhérent avec le texte saisi dans un «InputBox», ce nom se réfère aux cellules des colonnes A à G de la ligne active, en remplaçant au préalable les espaces vides par le caractère « _ » et les caractères « - » par le caractère « _ » de ce texte.
    Il ajoute également, le texte saisi dans l’InputBox, dans la dernière cellule non vide de la colonne A de la feuille «Liste noms», ce qui permet de mettre à jour la RowSource du «ComboBox».

    - un «ComboBox» qui permet de supprimer un adhérent, le nom défini se référant à son nom et le nom figurant dans la colonne A de la feuille «Liste noms».

    Le problème est le suivant, si le choix de l’adhérent a supprimer dans le «ComboBox» ex. (liste ci-dessus) est «DARDAR» les noms «DARDAR» et «DUPONT» seront supprimés et pas les autres, je n’arrive pas a corriger ce phénomène.

    DARDAR Lucien
    DUPONT Claire
    DURAND Paul
    MAIRE Michel
    MANU Gilles
    PASTEL Guy
    PASTI Carlo
    PIERRE Louis
    RAMOS Vidal

    C’est pour cela que je fais appel à nouveau à votre aide.
    Merci d’avance.
    Cordialement modus57

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Par défaut
    Bonjour,

    Le ComboBox2_Change() supprime 2 lignes.
    Je pense que le problème viens de là.

    ctac

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 830
    Par défaut
    Bonsoir ctac

    Merci de ton intérêt à ce fil.

    En fait il suprime les noms «DARDAR» et «DUPONT», mais que la ligne "DARDAR" dans la feuille "Commandes" et la feuille "Listes noms"

    c'est çà le problème

    a +

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 830
    Par défaut
    Bonjour.

    J’ai trouvé la solution, c’est tout bête mais, fallait-il y penser, il faut gérer l’erreur, ci-dessous 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
    Private Sub ComboBox2_Change()
    NomClient2 = LCase(Replace(ComboBox2.Value, " ", "_"))
    NomClient3 = LCase(Replace(NomClient2, "-", "_"))
        Application.ScreenUpdating = False
            Application.Goto Reference:="données"
            On Error Resume Next
            Range(NomClient3).Select
            If Err Then
            Else
                ActiveWorkbook.Names(NomClient3).Delete
            End If
            Selection.EntireRow.Delete
            Sheets("Liste noms").Cells.Find(What:=ComboBox2, After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False).EntireRow.Delete
            AppActivate "Microsoft Excel"
            ComboBox2 = "Supprimer un clients"
        Application.ScreenUpdating = True
    End Sub
    Problème résolu.

    Cordialement modus57.

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

Discussions similaires

  1. [VBA-E]attribution d'un nom à une cellule
    Par capedam dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/02/2006, 05h22
  2. [VBA-E]Création de graphe de Excel vers Excel
    Par pmboutteau dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 09/02/2006, 14h43
  3. VBA Word - Création 2 dossiers + 2 sauvegardes
    Par wouebmaster dans le forum VBA Word
    Réponses: 16
    Dernier message: 12/01/2006, 13h33
  4. VBA Excel - Création de graphique
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/01/2006, 16h11
  5. Réponses: 6
    Dernier message: 11/10/2004, 15h43

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