Supprimer une ligne si cellule d'une colonne remplie
Fermé
Antraxin
Messages postés
7
Date d'inscription
dimanche 2 octobre 2016
Statut
Membre
Dernière intervention
2 octobre 2016
-
2 oct. 2016 à 00:52
Antraxin Messages postés 7 Date d'inscription dimanche 2 octobre 2016 Statut Membre Dernière intervention 2 octobre 2016 - 2 oct. 2016 à 12:09
Antraxin Messages postés 7 Date d'inscription dimanche 2 octobre 2016 Statut Membre Dernière intervention 2 octobre 2016 - 2 oct. 2016 à 12:09
A voir également:
- Supprimer une ligne si cellule d'une colonne remplie
- Supprimer une page word - Guide
- Déplacer une colonne excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Formule somme excel colonne - Guide
5 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
2 oct. 2016 à 08:39
2 oct. 2016 à 08:39
Bonjour
La date colonne H est elle issue d'une formule ?
nombre total de colonnes ou dernière lettre des colonnes utilisées ?
Merci d'avance
La date colonne H est elle issue d'une formule ?
nombre total de colonnes ou dernière lettre des colonnes utilisées ?
Merci d'avance
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 713
2 oct. 2016 à 08:45
2 oct. 2016 à 08:45
Bonjour,
Tu peux le faire avec cette simple ligne de code :
Tu peux le faire avec cette simple ligne de code :
Cells(6, "H").Resize(Cells(Rows.Count, "H").End(xlUp).Row, 1).SpecialCells(xlCellTypeConstants).EntireRow.Delete
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
2 oct. 2016 à 09:22
2 oct. 2016 à 09:22
salut gb, :o)
c'est presque ce que j'avais sous le coude !
si H est remplie par des formules
"On error resume next" pour éviter un message d'erreur si il n'y a aucune cellule avec formule dans H
c'est presque ce que j'avais sous le coude !
si H est remplie par des formules
On Error Resume Next
Columns("H").SpecialCells(xlCellTypeFormulas).EntireRow.Delete
"On error resume next" pour éviter un message d'erreur si il n'y a aucune cellule avec formule dans H
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 713
2 oct. 2016 à 10:17
2 oct. 2016 à 10:17
Salut Michel,
Je n'ai vu ton message qu'après ma réponse mais je me doutais bien, en le voyant, que tu avais dû y penser très fort pour m'inspirer ! ;-)
Effectivement, c'est parfait en évitant le message d'erreur.
Bon dimanche à toi.
Je n'ai vu ton message qu'après ma réponse mais je me doutais bien, en le voyant, que tu avais dû y penser très fort pour m'inspirer ! ;-)
Effectivement, c'est parfait en évitant le message d'erreur.
Bon dimanche à toi.
Antraxin
Messages postés
7
Date d'inscription
dimanche 2 octobre 2016
Statut
Membre
Dernière intervention
2 octobre 2016
2 oct. 2016 à 11:25
2 oct. 2016 à 11:25
Bonjour, jai essayer les deux codes mais ça ne fonctionne pas
Surement ma syntaxe qui est mauvaise, je ne connais pas le VBA, je me sers de ce que j'arrive a trouver sur le net.
Merci a vous pour votre aide
Option Explicit Sub Supprimer() Cells(6, "H").Resize(Cells(Rows.Count, "H").End(xlUp).Row, 1).SpecialCells(xlCellTypeConstants).EntireRow.Delete End Sub
Surement ma syntaxe qui est mauvaise, je ne connais pas le VBA, je me sers de ce que j'arrive a trouver sur le net.
Merci a vous pour votre aide
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 713
2 oct. 2016 à 12:00
2 oct. 2016 à 12:00
Bonjour,
ça ne fonctionne pas
C'est très explicite : qu'est-ce qui ne fonctionne pas.
Si ta procédure utilise "copy" dans ta "commande qui envoi toute les lignes avec une valeur dans la colonne H sur un deuxième onglet", remplace "copy" par "Cut".
ça ne fonctionne pas
C'est très explicite : qu'est-ce qui ne fonctionne pas.
Si ta procédure utilise "copy" dans ta "commande qui envoi toute les lignes avec une valeur dans la colonne H sur un deuxième onglet", remplace "copy" par "Cut".
Antraxin
Messages postés
7
Date d'inscription
dimanche 2 octobre 2016
Statut
Membre
Dernière intervention
2 octobre 2016
>
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
Modifié par Antraxin le 2/10/2016 à 12:04
Modifié par Antraxin le 2/10/2016 à 12:04
ça me mets"erreur d'exécution 1004, la méthode delete de la classe range à echoué.
et je n'ai pas de "copy" dans la commande qui envoi sur la deuxième page :s
et je n'ai pas de "copy" dans la commande qui envoi sur la deuxième page :s
cousinhub29
Messages postés
985
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
9 janvier 2025
349
2 oct. 2016 à 11:42
2 oct. 2016 à 11:42
Bonjour,
Pour ma part, je ne comprends pas pourquoi tu insères une date, si c'est pour supprimer la ligne de suite après...
Donc, en utilisant uniquement ce code (j'ai gardé l'option double-clic, et ajouté une condition, sur le numéro de ligne) :
Peut-être?
Bon dimanche
Pour ma part, je ne comprends pas pourquoi tu insères une date, si c'est pour supprimer la ligne de suite après...
Donc, en utilisant uniquement ce code (j'ai gardé l'option double-clic, et ajouté une condition, sur le numéro de ligne) :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With Target
If .Row > 1 Then
If .Column = 6 Or .Column = 7 Or .Column = 8 Then .EntireRow.Delete: Cancel = True
End If
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If IsDate(Target) Then
If .Column = 6 Or .Column = 7 Or .Column = 8 Then .EntireRow.Delete
End If
End With
End Sub
Peut-être?
Bon dimanche
Antraxin
Messages postés
7
Date d'inscription
dimanche 2 octobre 2016
Statut
Membre
Dernière intervention
2 octobre 2016
2 oct. 2016 à 11:49
2 oct. 2016 à 11:49
En fait c'est pour supprimer de mon premier onglet, avant de supprimer j'ai une commande qui envoi toute les lignes avec une valeur dans la colonne H sur un deuxième onglet. le code n'est pas de moi donc je ne sais pas comment le changer pour qu'il supprimer après avoir déplacer.
C'est pour ça que je cherche un deuxième code qui fait qu'une fois que j'ai déplacer je puisse supprimer.
C'est pour ça que je cherche un deuxième code qui fait qu'une fois que j'ai déplacer je puisse supprimer.
cousinhub29
Messages postés
985
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
9 janvier 2025
349
2 oct. 2016 à 11:52
2 oct. 2016 à 11:52
Re-,
En effectuant le déplacement juste avant la suppression, dans un des codes proposés, peut-être?
Quel code, utilises-tu, pour effectuer le déplacement?
En effectuant le déplacement juste avant la suppression, dans un des codes proposés, peut-être?
Quel code, utilises-tu, pour effectuer le déplacement?
Antraxin
Messages postés
7
Date d'inscription
dimanche 2 octobre 2016
Statut
Membre
Dernière intervention
2 octobre 2016
2 oct. 2016 à 11:55
2 oct. 2016 à 11:55
Le code n'es pas de moi, j'espère que celui qui l'a fait ne m'en voudras pas ^^'
Il avait mis cette ligne après le dernier End if
Mais elle ne fonctionne pas.
Sub Archiver() Dim I As Worksheet 'déclare la variable I (onglet Interventions) Dim H As Worksheet 'déclare la variable H (onglet Histo) Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs) Dim NL As Long 'déclare la variable NL (Nombre de Lignes) Dim NC As Byte 'déclare la variable NC (Nombre de Colonnes) Dim J As Long 'déclare la variable J (incrément) Dim K As Long 'déclare la variable K (incrément) Dim L As Byte 'déclare la variable L (incrément) Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes) Dim DEST As Range 'déclare la variable DEST (cellule de DESTination) Dim PL As Range 'déclare la variable PL (PLage) Set I = Worksheets("Interventions") 'définit l'onglet I Set H = Worksheets("Histo") 'définit l'onglet H Set PL = I.Range("A1") 'initialise la variable PL TV = I.Range("A4").CurrentRegion 'définit le tableau des valeurs TV (il commence en A3 et la première valeur est à sa 4ème ligne) NL = UBound(TV, 1) 'définit le nombre de lignes NL du tableau des valeurs TV NC = UBound(TV, 2) 'définit le nombre de colonnes NC du tableau des valeurs TV K = 1 'initialise la variable K For J = 4 To NL 'boucle 1 : sur toutes les lignes J du tableau des valeurs TV (en partant de la 4ème) If TV(J, 8) <> "" Then 'condition : si la donnée ligne I colonne 8 (=> "Efectuer le") n'est pas vide Set PL = IIf(PL.Cells.Count = 1, I.Rows(J + 2), Application.Union(PL, I.Rows(J + 2))) 'définit la variable PL ReDim Preserve TL(1 To NC, 1 To K) 'redimensionne le tableau des lignes TL For L = 1 To NC 'boucle 2 : sur toutes les colonnes du tableau des valeurs TV TL(L, K) = TV(J, L) 'récupère dans la ligne L de TL, la valeur de la donnée en colonne L de TV (=transposition) Next L 'prochaine colonne de la boucle 2 K = K + 1 'incrémente K (ajoute une colonne au tableau des lignes TL) End If 'fin de la condition Next J 'prochaine ligne de la boucle 1 If K > 1 Then 'condition : si K est égale à 1 (au moins une occurence "Effectué le" trouvée) Set DEST = IIf(H.Range("A4") = "", H.Range("A4"), H.Range("A3").End(xlDown).Offset(1, 0)) 'définit la cellule de destination DEST DEST.Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL) 'renvoie dans DEST redimensionnée le tableau TL transposé End If 'fin de la condition End Sub
Il avait mis cette ligne après le dernier End if
If PL.Cells.Count > 1 Then PL.Delete 'efface la plage PL
Mais elle ne fonctionne pas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
cousinhub29
Messages postés
985
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
9 janvier 2025
349
2 oct. 2016 à 12:03
2 oct. 2016 à 12:03
Re-,
Ce code, tu l'as obtenu de Tautheme, sur un autre forum....
C'est pas que j'aime pas quand on multi-poste, mais le mieux, serait peut-être de lui demander directement...
En fait, si, j'aime pas, le multi-postage (faire travailler plusieurs, sur le même sujet, un dimanche...)
Bon Dimanche
Ce code, tu l'as obtenu de Tautheme, sur un autre forum....
C'est pas que j'aime pas quand on multi-poste, mais le mieux, serait peut-être de lui demander directement...
En fait, si, j'aime pas, le multi-postage (faire travailler plusieurs, sur le même sujet, un dimanche...)
Bon Dimanche
Antraxin
Messages postés
7
Date d'inscription
dimanche 2 octobre 2016
Statut
Membre
Dernière intervention
2 octobre 2016
2 oct. 2016 à 12:09
2 oct. 2016 à 12:09
Désolé, je m'adresserai à lui.
Bonne journée.
Bonne journée.
2 oct. 2016 à 11:22
La date de la colonne H est insérée de cette manière
Ou écrite via le pavé numérique.
La dernière colonne du tableau est en L5