Supprimer uniquement 2 cellules dans une liste
Résolu
balou11
Messages postés
26
Date d'inscription
Statut
Membre
Dernière intervention
-
balou11 Messages postés 26 Date d'inscription Statut Membre Dernière intervention -
balou11 Messages postés 26 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voila mon problème !
J'ai un fichier excel avec plusieurs onglets, dont un qui se nomme "Liste"
Dans cette onglet "liste" j'ai créé plusieurs "liste" (Contrat de travail, retraité, fonction, entreprise, nombre de salarie etc......) ces listes me permette de faire des menu déroulant dans un formulaire (jusque la tout va bien.)
Voila le problème : j'aimerais pouvoir supprimer par exemple (une entreprise colonne G, avec le nombre de salariés colonne H) via un autre formulaire, et pour ce faire j'ai utilisé le code suivant :
'Private Sub BtnSuppression_Click()
'Sheets("Liste").Select
'If MsgBox("Confirme tu la suppression de cette ENTREPRISE ?", vbYesNo, "Demande de suppression de l'entreprise") = vbYes Then
'Rows([G02:G1048576].Find(TxtEntrepriseRecherche.Value).Row).EntireRow.Delete
' Unload Me
' FrmEntreprise.Show
'End If
'End Sub
Le problème c'est que :
Rows([G02:G1048576].Find(TxtEntrepriseRecherche.Value).Row).EntireRow.Delete
me supprime entièrement la ligne alors que je souhaiterais pouvoir supprimer que les valeurs correspondantes dans les colonne G et H et que les cellules se décalent vers le haut. Si je supprime la ligne entière je viens modifier les autres listes et cela je ne le veut pas.
J’espère avoir été clair, et je vous remercie par avance de vos réponse !
Bon courage a tous !
Voila mon problème !
J'ai un fichier excel avec plusieurs onglets, dont un qui se nomme "Liste"
Dans cette onglet "liste" j'ai créé plusieurs "liste" (Contrat de travail, retraité, fonction, entreprise, nombre de salarie etc......) ces listes me permette de faire des menu déroulant dans un formulaire (jusque la tout va bien.)
Voila le problème : j'aimerais pouvoir supprimer par exemple (une entreprise colonne G, avec le nombre de salariés colonne H) via un autre formulaire, et pour ce faire j'ai utilisé le code suivant :
'Private Sub BtnSuppression_Click()
'Sheets("Liste").Select
'If MsgBox("Confirme tu la suppression de cette ENTREPRISE ?", vbYesNo, "Demande de suppression de l'entreprise") = vbYes Then
'Rows([G02:G1048576].Find(TxtEntrepriseRecherche.Value).Row).EntireRow.Delete
' Unload Me
' FrmEntreprise.Show
'End If
'End Sub
Le problème c'est que :
Rows([G02:G1048576].Find(TxtEntrepriseRecherche.Value).Row).EntireRow.Delete
me supprime entièrement la ligne alors que je souhaiterais pouvoir supprimer que les valeurs correspondantes dans les colonne G et H et que les cellules se décalent vers le haut. Si je supprime la ligne entière je viens modifier les autres listes et cela je ne le veut pas.
J’espère avoir été clair, et je vous remercie par avance de vos réponse !
Bon courage a tous !
A voir également:
- Supprimer uniquement 2 cellules dans une liste
- Supprimer rond bleu whatsapp - Guide
- Liste déroulante excel - Guide
- Supprimer une page dans word - Guide
- Comment supprimer une application préinstallée sur android - Guide
- Supprimer pub youtube - Accueil - Streaming
9 réponses
Bonjour
Juste une info: EntireRow signifie ligne entière et donc la commande Delete qui suit efface ... la ligne entière.
Toi ce que tu veux c’est effacer la/les cellules trouvées : pourquoi ne pas demander à Excel de remplacer la valeur par rien comme dans cet exemple qui devrait t’inspirer:
https://www.extendoffice.com/documents/excel/4088-excel-button-to-clear-specific-cells.html
Ritchi
Juste une info: EntireRow signifie ligne entière et donc la commande Delete qui suit efface ... la ligne entière.
Toi ce que tu veux c’est effacer la/les cellules trouvées : pourquoi ne pas demander à Excel de remplacer la valeur par rien comme dans cet exemple qui devrait t’inspirer:
https://www.extendoffice.com/documents/excel/4088-excel-button-to-clear-specific-cells.html
Ritchi
il y a alors ceci: https://www.mrexcel.com/board/threads/vba-macro-to-delete-cells-and-shift-up.1117528/
ou cela: https://analysistabs.com/vba-code/range/m/delete/
Cela utilise range.delete et tu peux indiquer le décalage (haut, droite, gauche) qui sera fait pour combler les cellules effacées
En voici une version illustrée dans la partie "Difference Between Clear & Delete Methods": https://www.wallstreetmojo.com/vba-clear-contents/
ou cela: https://analysistabs.com/vba-code/range/m/delete/
Cela utilise range.delete et tu peux indiquer le décalage (haut, droite, gauche) qui sera fait pour combler les cellules effacées
En voici une version illustrée dans la partie "Difference Between Clear & Delete Methods": https://www.wallstreetmojo.com/vba-clear-contents/
Je viens d'essayer un tas de lignes de commandes, mais en vain !
Sais tu me dire par quoi je dois remplacer cette ligne :
Rows([G02:G1048576].Find(TxtEntrepriseRecherche.Value).Row).EntireRow.Delete
pour résoudre mon problème !
Merci,
Sais tu me dire par quoi je dois remplacer cette ligne :
Rows([G02:G1048576].Find(TxtEntrepriseRecherche.Value).Row).EntireRow.Delete
pour résoudre mon problème !
Merci,
Bonjour,
voici un exemple. J'ai remplacé TxtEntrepriseRecherche par une InputBox:
voilà à adapter
voici un exemple. J'ai remplacé TxtEntrepriseRecherche par une InputBox:
Sub test() Dim entreprise As String Dim ligne As Integer entreprise = InputBox("Entrez le nom de l'entreprise:", "Suppression") ligne = Cells.Find(entreprise, , xlValues, xlWhole).Row Range("G" & ligne & ":H" & ligne).ClearContents End Sub
voilà à adapter
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour le pivert,
Alors après plusieurs essais infructueux, je ne m'en sort toujours pas .....je vais continuer mes investigations.
Je vais continuer de chercher a moins que ....... !
Merci beaucoup
Alors après plusieurs essais infructueux, je ne m'en sort toujours pas .....je vais continuer mes investigations.
Je vais continuer de chercher a moins que ....... !
Merci beaucoup
Bonsoir à vous tous
Balou, Le Pivert t'a aiguillé vers la solution mais incomplètement car il n'y a pas suppression des vides
En utilisant son instruction combinée à la tienne tu peux obtenir
ligne = Cells.Find(TxtEntrepriseRecherche.Value, , xlValues, xlWhole).Row
te donnant le n° de la ligne où effacer les valeurs en G et H
que tu effaceras avec l'instruction de Le PIvert :
Range("G" & ligne & ":H" & ligne).ClearContents
Ensuite pour supprimer les blancs ainsi créés dans tes listes en G et H il te suffit de faire trier ta liste en G et ta liste en H en même temps sur la colonne G par ordre alphabétique. Fais ce tri "manuellement" une fois en ayant lancé avant l'enregistreur de macros et tu auras les lignes de macros à ajouter à la fin de la tienne après l'effacement des cellules
Cdlmnt
Via
Balou, Le Pivert t'a aiguillé vers la solution mais incomplètement car il n'y a pas suppression des vides
En utilisant son instruction combinée à la tienne tu peux obtenir
ligne = Cells.Find(TxtEntrepriseRecherche.Value, , xlValues, xlWhole).Row
te donnant le n° de la ligne où effacer les valeurs en G et H
que tu effaceras avec l'instruction de Le PIvert :
Range("G" & ligne & ":H" & ligne).ClearContents
Ensuite pour supprimer les blancs ainsi créés dans tes listes en G et H il te suffit de faire trier ta liste en G et ta liste en H en même temps sur la colonne G par ordre alphabétique. Fais ce tri "manuellement" une fois en ayant lancé avant l'enregistreur de macros et tu auras les lignes de macros à ajouter à la fin de la tienne après l'effacement des cellules
Cdlmnt
Via
Bonsoir Via,
C'est super sympa.
Je vais essayer de combiné tout ça, si je trouve quelque chose de simple et efficace , je vous ferais passer le code.
Merci beaucoup, a vous tous !
Bonne soirée
C'est super sympa.
Je vais essayer de combiné tout ça, si je trouve quelque chose de simple et efficace , je vous ferais passer le code.
Merci beaucoup, a vous tous !
Bonne soirée
Bonjour à tous
En reprenant la solution de via55, une fois ligne trouvée, en utilisant la remarque de _Ritchi_ (post 3)
Range("G" & ligne & ":H" & ligne).Delete
permet de supprimer les deux cellules et de remonter la suite des colonnes G et H d'une ligne
Là, tu n'auras plus besoin d'effacer le contenu des cellules à supprimer
Cdlmnt
En reprenant la solution de via55, une fois ligne trouvée, en utilisant la remarque de _Ritchi_ (post 3)
Range("G" & ligne & ":H" & ligne).Delete
permet de supprimer les deux cellules et de remonter la suite des colonnes G et H d'une ligne
Là, tu n'auras plus besoin d'effacer le contenu des cellules à supprimer
Cdlmnt
Bonjour a tous,
Voila le code qui fonctionne parfaitement bien et ceci grâce a votre aide précieuse !
Private Sub BtnSuppression_Click()
Dim entreprise As String
Dim ligne As Integer
Sheets("Liste").Select
If MsgBox("Confirme tu la suppression de cette ENTREPRISE ?", vbYesNo, "Demande de suppression de l'entreprise") = vbYes Then
ligne = Cells.Find(TxtEntrepriseRecherche.Value, , xlValues, xlWhole).Row 'correspond a la ligne recherchée
Range("G" & ligne & ":H" & ligne).Delete Shift:=xlUp ' permet de supprimer les cellules sélectionnées et de remonter vers le haut
Sheets("tableau de bord").Activate
End If
Encore merci a tous.
Voila le code qui fonctionne parfaitement bien et ceci grâce a votre aide précieuse !
Private Sub BtnSuppression_Click()
Dim entreprise As String
Dim ligne As Integer
Sheets("Liste").Select
If MsgBox("Confirme tu la suppression de cette ENTREPRISE ?", vbYesNo, "Demande de suppression de l'entreprise") = vbYes Then
ligne = Cells.Find(TxtEntrepriseRecherche.Value, , xlValues, xlWhole).Row 'correspond a la ligne recherchée
Range("G" & ligne & ":H" & ligne).Delete Shift:=xlUp ' permet de supprimer les cellules sélectionnées et de remonter vers le haut
Sheets("tableau de bord").Activate
End If
Encore merci a tous.
Oui cela j'y avait pensé, mais les cellules sont nominatives, je veux juste au lieu de supprimer la ligne, supprimer l'entreprise avec le nombre de salariés. Elle peut (l'entreprise) se trouver en G12 ou G20 ou G3012 ou ....etc, donc je ne peux pas utiliser la macro de ton exemple, en plus et il faut en même temps de supprimer l'entreprise, supprimer le nombre d'employés qui se trouve a coté en colonne H !
Donc l'idée c'est de trouver le code qui va bien, pour remplacer celui ci dessous car il fonctionne très bien mais il supprime la ligne entière effectivement a cause de la valeur EntireRow. Le début du code est bon je pense a savoir :
Rows([G02:G1048576].Find(TxtEntrepriseRecherche.Value).Row)
Mais c'est la fin que je ne trouve pas il faut remplacer (.EntireRow.Delete) par ????
En tout cas merci Ritchi d'voir pris du temps pour me répondre !
Bonne journée