Supprimer plusieurs cellules automatiquement

goodsayan

XLDnaute Nouveau
Bonjour
Je souhaite supprimer automatiquement des cellules d'une colonne suivant leurs positions.
Mon tableau est comme ca:
cellules 1 a 6 à supprimer
cellules 7 à 10 a garder
cellules 11 à 14 à supprimer
cellules 15 à 20 à suppimer
cellules 21 à 24 a garder
cellules 25 à 28 à supprimer
Etc...
Et cela sur toutes une colonne de taille variable.

Mon probleme peut donc se décomposer en 2:
suppression des 1 à 6, puis 15 à 20 etc... il y a 5 lignes à supprimer
suppression des 11 à 14, puis 25 à 28 etc... il y a 3 lignes à supprimer

Si quelqu'un connait une macro pouvant faire au moins un des sous problemes? Après je devrais pouvoir l'adapter pour l'autre partie.
Merci
 

Pièces jointes

  • supligne.xls
    14 KB · Affichages: 64
  • supligne.xls
    14 KB · Affichages: 58
  • supligne.xls
    14 KB · Affichages: 63

Spitnolan08

XLDnaute Barbatruc
Re : Supprimer plusieurs cellules automatiquement

Bonjour,

Une solution à adapter et à tester
Code:
Sub DestrPart()
For i = 100 To 1 Step -1
    If (i - 1) Mod 14 = 0 Then Range(Cells(i, "A"), Cells(i + 4, "A")).EntireRow.Delete
Next
End Sub
Cordialement

Edit : pas vu matthieu33
 

goodsayan

XLDnaute Nouveau
Re : Supprimer plusieurs cellules automatiquement

La solution de Matthieu33 est preque parfaite!
Sauf que ma derniere ligne de texte doit etre considerée par excel comme un nombre et donc il me la garde...
tr
trtr
rtrtr
rtz
ztz
oiy
5
7
7
8
tr
trtr
rtrtr
etert
ezt
rtrtr
ertert
ertert
ete

Comment faire?

De plus est ce possible de supprimer carrément toute la ligne et non la cellule?
Ca me permettrait de gagner vraiment du temps en copiant toutes mes colonnes à cote les unes des autres et de cliquer sur le bouton.
 

goodsayan

XLDnaute Nouveau
Re : Supprimer plusieurs cellules automatiquement

Bonjour le fil,

Comme d'hab..... (pour ce monsieur aussi) ici aussi et avec des réponses : Supprimer plusieurs cellules automatiquement - Forum des développeurs

Je comprends pas ce que tu veux dire?
Oui j'ai posé la question sur un autre forum et alors? C'est interdit?

Ca m'aggace presque encore plus que les titres à la c... et la question, si tu veux la voir, t'ouvres le fichier..

:confused:
 

jeanpierre

Nous a quitté
Repose en paix
Re : Supprimer plusieurs cellules automatiquement

Re, et salut Sipt,

Pas clair, peut-être, mais quand tu es aggacé, après avoir voulu trouver une solution (pas toujours simple), tu as l'impression d'avoir perdu ton temps....

Donc, dire simplement : j'ai posté ailleurs et ensuite, ceux qui voudront te répondre le feront, d'autres pas... mais il est certain que chacun suivra, dans ce cas, l'évolution des choses (ici et ailleurs) pour te dépêtrer si besoin en est encore

Voilà.

A te lire.

Jean-Pierre qui remercie Spit pour son intervention.
 

goodsayan

XLDnaute Nouveau
Re : Supprimer plusieurs cellules automatiquement

Re, et salut Sipt,

Pas clair, peut-être, mais quand tu es aggacé, après avoir voulu trouver une solution (pas toujours simple), tu as l'impression d'avoir perdu ton temps....

Donc, dire simplement : j'ai posté ailleurs et ensuite, ceux qui voudront te répondre le feront, d'autres pas... mais il est certain que chacun suivra, dans ce cas, l'évolution des choses (ici et ailleurs) pour te dépêtrer si besoin en est encore

Voilà.

A te lire.

Jean-Pierre qui remercie Spit pour son intervention.

Désolé de t'avoir aggacé... J'ai bien compris le message pour la prochaine fois ;)
 

goodsayan

XLDnaute Nouveau
Re : Supprimer plusieurs cellules automatiquement

J'ai encore un probleme avec mon programme...
Il se sert du nombre de chiffre dans la colonne A pour effectuer une boucle et supprimer les valeurs indésirées.
Or jusqu'a présent la colonne A était la plus grande mais maintenant ce n'est plus forcément le cas. Et donc une partie seulement du document est traité...
Comment faire pour déterminer la plus grande colonne de mon tableau et s'en servir pour la boucle?
Voici le code:
Code:
Sub SupLigne()
    Dim lgLig As Long
    Dim bTrouve As Boolean
        
    Application.ScreenUpdating = False
    
    bTrouve = False
    
    ' Boucle de la dernière à la première ligne de la colonne A
    For lgLig = Range("A65536").End(xlUp).Row - 1 To 1 Step -1
        ' Si la valeur de la cellule n'est pas numérique, on la supprime
        If Not IsNumeric(Range("A" & lgLig).Value) Then
            Range("A" & lgLig).Select
            Selection.EntireRow.Delete
            
            bTrouve = True
        End If
    Next lgLig

    ' Suppression uniquement si des lignes numériques ont été supprimées
    If bTrouve = True Then
        ' Boucle de la dernière à la première ligne de la colonne A
        For lgLig = Range("A65536").End(xlUp).Row To 1 Step -5
            Range("A" & lgLig).Select
            Selection.EntireRow.ClearContents
        Next lgLig
    End If

    Application.ScreenUpdating = True
End Sub

J'ai trouvé l'instruction pour connaitre la derniere ligne de mon tableau
Code:
DerniereLigne = Cells.SpecialCells(xlLastCell).Row
Mais j'arrive pas du tout à l'adapter au programme existant.
Merci
 

fred65200

XLDnaute Impliqué
Re : Supprimer plusieurs cellules automatiquement

bonsoir
essaie ce code
Code:
Sub SupLigne()
    Dim lgLig As Long
    Dim bTrouve As Boolean
        
    Application.ScreenUpdating = False
    
    bTrouve = False
[B]    DerniereLigne = Cells.SpecialCells(xlLastCell).Row
    ' Boucle de la dernière à la première ligne de la colonne A
    For lgLig = DerniereLigne[/B] To 1 Step -1
        ' Si la valeur de la cellule n'est pas numérique, on la supprime
        If Not IsNumeric(Range("A" & lgLig).Value) Then
            Range("A" & lgLig).Select
            Selection.EntireRow.Delete
            
            bTrouve = True
        End If
    Next lgLig

    ' Suppression uniquement si des lignes numériques ont été supprimées
    If bTrouve = True Then
        ' Boucle de la dernière à la première ligne de la colonne A
        For lgLig = Range("A65536").End(xlUp).Row To 1 Step -5
            Range("A" & lgLig).Select
            Selection.EntireRow.ClearContents
        Next lgLig
    End If

    Application.ScreenUpdating = True
End Sub

cordialement
 

matthieu33

XLDnaute Occasionnel
Re : Supprimer plusieurs cellules automatiquement

Bonsoir Goodsayan, Fred65200 et le forum,

Tu peux également essayer ce code qui permet de trouver la dernière cellule, la dernière ligne et la dernière colonne contenant le plus grand nombre de lignes.

Code:
Private Sub SupLigne()
    Dim lgLig As Long
    Dim bTrouve As Boolean
    Dim lgDerLig As Long
    Dim lgDerCol As Long
        
    Application.ScreenUpdating = False
    
    ' Trouver la dernière cellule de la feuille
    ActiveCell.SpecialCells(xlLastCell).Select
    ' Dernière ligne
    lgDerLig = ActiveCell.Row
    ' Dernière colonne contenant le plus grand nombre de lignes
    lgDerCol = Range("IV" & lgDerLig).End(xlToLeft).Column
    
    bTrouve = False
    
    ' Boucle de la dernière à la première ligne de la colonne A
    For lgLig = lgDerLig - 1 To 1 Step -1
        ' Si la valeur de la cellule n'est pas numérique, on la supprime
        If Not IsNumeric(Cells(lgLig, lgDerCol).Value) Then
            Cells(lgLig, lgDerCol).Select
            Selection.EntireRow.Delete
            
            bTrouve = True
        End If
    Next lgLig

    
    ' Trouver la dernière cellule de la feuille
    ActiveCell.SpecialCells(xlLastCell).Select
    ' Dernière ligne
    lgDerLig = ActiveCell.Row
    ' Dernière colonne contenant le plus grand nombre de lignes
    lgDerCol = Range("IV" & lgDerLig).End(xlToLeft).Column
    
    ' Suppression uniquement si des lignes numériques ont été supprimées
    If bTrouve = True Then
        ' Boucle de la dernière à la première ligne de la colonne A
        For lgLig = lgDerLig To 1 Step -4
            Cells(lgLig, lgDerCol).Select
            Selection.EntireRow.Delete
        Next lgLig
    End If

    Application.ScreenUpdating = True
End Sub


@+
 

fred65200

XLDnaute Impliqué
Re : Supprimer plusieurs cellules automatiquement

re bonsoir le fil

juste une petite parenthèse pour mathieu33

il faut prendre l'habitude de ne plus utiliser
Code:
lgDerCol = Range("IV" & lgDerLig).End(xlToLeft).Column
car sur Excel 2007, la dernière colonne est XFD
Code:
lgDerCol = cells( lgDerLig, cells.columns.count).End(xlToLeft).Column
idem pour le nombre de lignes qui passe à 1 048 576 (vs 65 535).

cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 108
Messages
2 085 375
Membres
102 876
dernier inscrit
BouteilleMan