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 :

Supprimer des données variables à partir d'un combobox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Directeur RH
    Inscrit en
    Septembre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur RH

    Informations forums :
    Inscription : Septembre 2015
    Messages : 23
    Par défaut Supprimer des données variables à partir d'un combobox
    Bonjour,

    je me permets de vous solliciter à nouveau pour finaliser un outil qui servira à construire des plannings.
    Les aides et conseils que j'ai déjà reçus par un membre du site m'ont permis d'arriver à un résultat au delà de mes espérances...
    J'ai réussi à faire la majorité des autres codes mais je bloque sur un combobox, je vous explique :

    Dans un userform (user), j'ai une combobox1 qui reprend des données dates ("dddd d mmmm yyyy") d'une feuille (PLANNING) de C2 à C1199.

    Sur le même userform (user) , j'ai un bouton de commande qui doit servir à supprimer les cellules (hrs de travail) de la colonne (D) à (G) mais à partir de la ligne au dessus de celle valider par le combobox et ce, jusqu'au début du planning, c'est à dire (D2: G2)

    Ex: si dans le combobox1 de l'userform (user), je valide le "1er Mars 2016" (cellule C164) alors sur la feuille "PLANNING", je supprime les cellules (D163: G163 à D2: G2)
    Les cellules (D2: G2) correspondent au début du planning (c'est à dire à la cellule C2 le 21 septembre 2015). On n'ira jamais au delà
    Dans ts les cas, lorsqu'on supprimera les cellules par le bouton de commande, cela sera toujours jusqu'au cellules (D2: G2).
    Je bloque sur le décalage de la ligne et surtout sur la boucle qui varie tout le temps.

    J'ai commencé avec ce code, que j'ai trouvé sur le site et je l'ai adapté (tenté) mais cela ne fonctionne pas, je pense que c'est normal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub CommandButton11_Click()
    Dim i As Integer
    Dim Editeur As String
    Editeur = ComboBox1.Value
     
    With Sheets("PLANNING")
                For i = .Range("C" & .Rows.Count).End(xlUp).Row To 4
                            If .Range("C" & i).Value = Editeur Then
        Cells(i).Delete
        End If
       Next i
    End With
    End Sub
    Je pense qu'avec ce code, je supprime la ligne complète au dessus de celle validée par le combobox...

    Je vous remercie par avance pour votre aide et vos conseils
    N'hésitez pas à me dire si un fichier serait utile à la compréhension de la problématique.

    Danny

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Teste avec ce code, il te faudra peut être adapter au niveau de "ListIndex" avec + ou - mais normalement, comme je l'ai écris ça devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub CommandButton11_Click()
     
        Dim I As Integer
     
        With Sheets("PLANNING")
            .Rows("2:" & ComboBox1.ListIndex + 1).EntireRow.Delete
        End With
     
    End Sub

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Et de cette façon si tu veux ne supprimer que les cellules de la plage et pas les lignes entières :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub CommandButton11_Click()
     
        Dim I As Integer
     
        With Sheets("PLANNING")
            .Range("D2:G" & ComboBox1.ListIndex + 1).Delete xlShiftUp
        End With
     
    End Sub

  4. #4
    Membre averti
    Homme Profil pro
    Directeur RH
    Inscrit en
    Septembre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur RH

    Informations forums :
    Inscription : Septembre 2015
    Messages : 23
    Par défaut
    Bonjour Theze,

    je te remercie encore une fois pour ta proposition
    Je pensais qu'on allait s'attaquer à un code de 15000 lignes (oui, j'ai fais un petit tour par Marseille) mais là ...
    Enfin, il m'annonce une erreur "1004"
    "Erreur définie par l'application ou par l'objet"

    Je ne pense pas que cela soit dû aux propriétés du combobox car je n'ai pas mis de code pour définir les valeurs dates de la feuille PLANNING.
    J'ai mis les valeurs du combobox dans la fenêtre propriété : Rowsource PLANNING!C2:C1199
    Je ne pense pas que cela est dû non plus aux modifs que j'ai apportées car tu verras qu'au final, il y a deux combobox, une qui définie la partie des cellules à supprimer au dessus de la date choisie et le second combobox pour supprimer les données en dessous de la date choisie, toujours à partir de la colonne D à G.

    Je te joins un fichier pour plus de facilité.
    Encore merci d'avance
    Bonne fin d'aprem à toi

    Danny

    Classeur1.xlsm

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonsoir,

    C'est ton formatage qui pose problème car tu modifie le texte du ComboBox et alors, il n'est plus dans la liste donc, ListIndex est égal à -1.
    Remplis tes ComboBox avec AddItem et tu formate à ce moment là (supprimes la valeur de la propriété RowSource) :
    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 UserForm_Initialize()
     
        Dim I As Long
     
        With Worksheets("PLANNING")
     
            For I = 2 To .Cells(.Rows.Count, 3).End(xlUp).Row
     
                ComboBox1.AddItem Format(.Cells(I, 3).Value, "dddd d mmmm yyyy")
                ComboBox2.AddItem Format(.Cells(I, 3).Value, "dddd d mmmm yyyy")
     
            Next I
     
        End With
     
    End Sub
    Par contre, si tu veux supprimer ce qu'il y a avant et après la plage bornée par les ComboBox, le code est plutôt comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub CommandButton11_Click()
     
        With Sheets("PLANNING")
     
              .Range("D2:G" & ComboBox1.ListIndex + 1).Delete xlShiftUp
              .Range("D" & (ComboBox2.ListIndex - ComboBox1.ListIndex) + 3 & ":G" & .Cells(.Rows.Count, 7).End(xlUp).Row).Delete xlShiftUp
     
        End With
     
    End Sub

  6. #6
    Membre averti
    Homme Profil pro
    Directeur RH
    Inscrit en
    Septembre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur RH

    Informations forums :
    Inscription : Septembre 2015
    Messages : 23
    Par défaut
    Bonsoir Theze,

    merci pour ton retour
    J'ai bien saisi le problème de formatage, tu as raison mais avec AddItem, il ne reconnait plus la valeur date des combobox.
    J'ai bien enlevé les valeurs dans les propriétés RowSources mais si je supprime le code pour le formatage c'est à dire les codes suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub ComboBox1_Change()
    ComboBox1.Value = Format(ComboBox1.Value, "dddd d mmmm yyyy")
    End Sub
     
    Private Sub ComboBox2_Change()
    ComboBox2.Value = Format(ComboBox2.Value, "dddd d mmmm yyyy")
    End Sub
    Les combobox affichent des date dans le déroulé mais des chiffres une fois choisis et non des dates

    En laissant les chiffres ds les combobox et en supprimant ces deux lignes de code, j'ai essayé et cela supprime les données à partir de la ligne 3 et tout ce qui est en dessous, quelles que soit la date (chiffres) que l'on définit dans les combobox.

    J'aurais également souhaité que cela garde le format du tableau de la feuille planning. L'objectif est de supprimer uniquement les valeurs en laissant le format du tableau (au cas ou il faudrait recommencer le planning...)
    J'ai essayé en remplaçant le "Delete" par "ClearContents" mais cela ne fonctionne plus

    L'idée est de valider des dates de début et dates de fin de la colonne C (dates) et de supprimer de la colonne D à G, les valeurs des cellules qui se trouvent juste au dessus de la date définie dans le combobox 1 (début du planning) et de supprimer les cellules qui se trouvent au dessous de la date définie dans le combobox 2 (fin du planning).

    Je te renvoie le fichier avec les codes que tu as envoyés pour que tu puisses voir le résultat.
    Désolé de ne pouvoir trouver une solution de mon coté
    Merci par avance


    Danny

    Classeur1 (Enregistré automatiquement).xlsm

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

Discussions similaires

  1. supprimer des données Excel à partir de MATLAB
    Par Nab18 dans le forum MATLAB
    Réponses: 2
    Dernier message: 16/05/2013, 16h33
  2. Réponses: 2
    Dernier message: 29/08/2011, 16h27
  3. Réponses: 1
    Dernier message: 28/03/2010, 10h06
  4. Réponses: 1
    Dernier message: 30/05/2007, 15h51
  5. Supprimer des données dans un xml
    Par pingoui dans le forum Format d'échange (XML, JSON...)
    Réponses: 49
    Dernier message: 12/08/2004, 16h49

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