supprimer cellules dans plage et remplacer le vide

jtitin

XLDnaute Occasionnel
Bonjour à tous

je souhaite supprimer les cellules correspondant au N° sélectionné par une combobox1 d'un userform1
et que le vide laissé soit remplacé par les cellules d'en dessous
ces cellules sont dans des plages nommées

merci pour votre aide
 

Pièces jointes

  • test_supprim.xlsm
    24.3 KB · Affichages: 37
  • test_supprim.xlsm
    24.3 KB · Affichages: 41
  • test_supprim.xlsm
    24.3 KB · Affichages: 34

sousou

XLDnaute Barbatruc
Re : supprimer cellules dans plage et remplacer le vide

Bonjour

essaie ce code

Private Sub CommandButton1_Click()
mesplages = Array("Plage1", "Plage2", "plage3", "plage4")

For Each i In mesplages
Set zone = ThisWorkbook.Names(i).RefersToRange
Set tablezone = New Collection
For Each n In zone.Rows
If n.Columns(2) = Val(UserForm1.ComboBox1) Then
n.ClearContents
Else
tablezone.Add n
End If

Next

For n = 0 To tablezone.Count - 1

For Each v In tablezone(n + 1).Columns
zone.Cells(n + 1, v.Column - zone.Column + 1) = v
Next

Next
Next


End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : supprimer cellules dans plage et remplacer le vide

Bonjour jtitin, sousou,

Un autre essai. On a aussi ôté les doublons de la combobox1 et trié la liste.
VB:
Private Sub CommandButton1_Click()
Dim tablo(), i&, j&, n&, xrg As Range, elem
  
Application.ScreenUpdating = False
With Sheets("Feuil1")
  ' pour chaque plage
  For i = 1 To 4
    Set xrg = .Range("Plage" & i)   ' Plagei
    ' créer un tableau vide de nombre de lignes de Plagei et à 2 colonnes
    ReDim tablo(1 To xrg.Count / 2, 1 To 2): n = 0
    ' pour chaque élément de la 2ième colonne de Plagei
    For Each elem In xrg.Columns(2).Cells
      If elem <> Val(ComboBox1) Then
        'si le numero est <> de combobox, on met l'laligne dans le tablo
        n = n + 1: tablo(n, 1) = elem.Offset(, -1): tablo(n, 2) = elem
      End If
    Next elem
    xrg = tablo         ' on affecte à Plagei le tablo
  Next i
End With
UserForm_Initialize
Application.ScreenUpdating = True
End Sub

Private Sub UserForm_Initialize()
Dim C As Range, dico, i As Integer, tablo, ech
  Set dico = CreateObject("scripting.dictionary")
  With Sheets("Feuil1")
    ' ^poter les doublons
    For Each C In .Range("Maplage")
      If Not C = "" Then dico(C.Value) = Empty
    Next C
    tablo = dico.keys
    
    ' trier les valeurs de la combobox
    Do
      ech = ""
      For i = LBound(tablo) To UBound(tablo) - 1
        If tablo(i) > tablo(i + 1) Then ech = tablo(i): tablo(i) = tablo(i + 1): tablo(i + 1) = ech
      Next i
    Loop Until ech = ""
    
    ' affecter le tableau trié à la ComboBox
    ComboBox1.List = tablo: ComboBox1.ListIndex = -1
  End With
End Sub

Edit : v1a qui réactualise la combobox après une supression.
 

Pièces jointes

  • jtitin-test_supprim-v1a.xlsm
    30.1 KB · Affichages: 25
Dernière édition:

jtitin

XLDnaute Occasionnel
Re : supprimer cellules dans plage et remplacer le vide

merci sousou pour ton retour c'est tout bon.
merci mapomme pour ta réponse également mais je ne parvient pas a faire fonctionné ton fichier.

une autre petite question si c'est pas trop demander
est il possible lors de la sélection dans la combobox, d'afficher la sélection dans la listbox1
c'est à dire affiché les lignes correspondant au n° choisi dans la combobox
ex: si combobox1 sélection N° 7
alors s'affiche en listbox1 sur 2 colonnes : Crème Bretonne 7
Crème Savoyarde 7

Merci encore
 

Pièces jointes

  • test_supprim.xlsm
    25.3 KB · Affichages: 18
  • test_supprim.xlsm
    25.3 KB · Affichages: 17
  • test_supprim.xlsm
    25.3 KB · Affichages: 13

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : supprimer cellules dans plage et remplacer le vide

Bonjour jtitin,

(...) merci mapomme pour ta réponse également mais je ne parvient pas a faire fonctionné ton fichier.

une autre petite question si c'est pas trop demander
est il possible lors de la sélection dans la combobox, d'afficher la sélection dans la listbox1
c'est à dire affiché les lignes correspondant au n° choisi dans la combobox
ex: si combobox1 sélection N° 7
alors s'affiche en listbox1 sur 2 colonnes : Crème Bretonne 7
Crème Savoyarde 7 (...)

Voici une version v2 avec une ListBox comprenant le numéro et l'intitulé.

Si ça ne fonctionne pas, peux-tu me dire, s'il te plaît, où ça coince (ligne du programme) et le message d'erreur affiché ?
 

Pièces jointes

  • jtitin-test_supprim-v2.xlsm
    29.8 KB · Affichages: 21
Dernière édition:

jtitin

XLDnaute Occasionnel
Re : supprimer cellules dans plage et remplacer le vide

re bonjour mapomme
oui j'ai fait un essai avec ton fichier en retour
mais l'userform1 ne se lance pas, pas d'action par le bouton sur la feuille
j'ai regardé ta macro et j'ai vue cette ligne qui peut être aurait pu avoir un problème:

Set xrg = .Range("Plage" & i)

je l'ai modifié par:

Set xrg = .Range("Maplage" & i) mais pareil, pas d'affichage userform1

Merci
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : supprimer cellules dans plage et remplacer le vide

Re jtitin,
c'est identique pour ton 2ème fichier (...) c'est dommage

Fichtre, diantre, palsambleu ! :(:( C'est crispant cette situation !

Je te mets une autre version v2a en changeant le type de bouton. Peux-tu me dire, SVP, ce qu'il en est ?
Il va bien falloir trouver ce qui coince !



Une autre possibilité de test:
  • aller dans l'environnement VBA
  • afficher le userform1
  • cliquer sur le userform
  • appuyez sur la touche de fonction F5

Que se passe-t-il ?
 

Pièces jointes

  • jtitin-test_supprim-v2a.xlsm
    28.5 KB · Affichages: 19
Dernière édition:

jtitin

XLDnaute Occasionnel
Re : supprimer cellules dans plage et remplacer le vide

oui mapomme comme cela ça fonctionne
mais est il possible également de rajouter une listbox qui récupère les lignes qui vont être supprimées
la combobox1 -> le N°
on sélectionne le N° qui sera supprimé
à la sélection on incrémente la listbox
puis on supprime les cellules de la feuille

j'avais mis un fichier plus haut à la suuite de la réponse de sousou et ta 1ère réponse

Merci encore
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : supprimer cellules dans plage et remplacer le vide

Bonjour jtitin,

oui mapomme comme cela ça fonctionne
Si la v2a (avec un bouton qui est une forme) fonctionne alors que la v1 et v2 ne fonctionnent pas (avec un bouton de type CommandButton), je me demande si tu n'a pas le bug Microsoft survenu après des mises à jour de Windows (problème avec les fichiers *.exd).
Tu peux essayer ce qui est préconisé dans le post remplir un userform à partir de ligne dans excel (de Staple1600 :)) puis essayer de ré-ouvrir les version V1 et v2.


mais est il possible également de rajouter une listbox qui récupère les lignes qui vont être supprimées
la combobox1 -> le N°
on sélectionne le N° qui sera supprimé
à la sélection on incrémente la listbox
puis on supprime les cellules de la feuille

j'avais mis un fichier plus haut à la suite de la réponse de sousou et ta 1ère réponse

Merci encore
J'avais mal lu l’énoncé :(. Voici une version v2b. Convient-elle mieux ?
 

Pièces jointes

  • jtitin-test_supprim-v2b.xlsm
    30.2 KB · Affichages: 21
Dernière édition:

jtitin

XLDnaute Occasionnel
Re : supprimer cellules dans plage et remplacer le vide

Bonjour mapomme et merci pour ton aide

c'est tout à fait ce qu'il me fallait
juste ne pas réinitialiser l'uerform1 pour conserver les info dans la listbos1

merci encore c'est parfait
 

jtitin

XLDnaute Occasionnel
Re : supprimer cellules dans plage et remplacer le vide

re bonjour, re bonjour mapomme

en vue d'utiliser ton code pour des plages plus grandes
avoir des plages nommées de plus de 2 colonnes ( pour l'instant je n'est pas encore défini )
pourrait tu me commenter ton code afin justement, de comprendre comme il faut le fonctionnement et de l'ajuster en fonction.

encore merci
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : supprimer cellules dans plage et remplacer le vide

Bonsoir titin,

(...) en vue d'utiliser ton code pour des plages plus grandes
avoir des plages nommées de plus de 2 colonnes ( pour l'instant je n'est pas encore défini )
pourrait tu me commenter ton code afin justement, de comprendre comme il faut le fonctionnement et de l'ajuster en fonction (...)

Voilà quelques explications pour la v2c (presque identique à la v2b à deux ou 3 lignes près).

Edit : fichier .pdf -> j'ai corrigé quelques coquilles présentes dans la version précédente.
 

Pièces jointes

  • jtitin-test_supprim-v2c.xlsm
    30.9 KB · Affichages: 11
  • jtitin-test_supprim-v2c (explications).pdf
    341.2 KB · Affichages: 20
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 715
Messages
2 081 822
Membres
101 821
dernier inscrit
hybroxis