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 :

Si la cellule est vide alors supprimer la ligne correspondante


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 31
    Points : 21
    Points
    21
    Par défaut Si la cellule est vide alors supprimer la ligne correspondante
    Bonjour à tous,

    J'aimerai savoir ce qui cloche dans mon code...

    J'essai de supprimer la ligne X dès que la cellule B&X est vide

    Merci d'avance



    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
     
     
    Sub essaimacro()
    Dim S As Long, T As Long
    'Dans la cellule B1, y'a le compte des valeurs de la colonne B
    S = Sheets("Feuil_historique").Range("B1")
    'Je commence à descendre à partir de la ligne 3
    T = 3
    Do Until T = S
    'Si la Cellule B&T est vide
    If IsEmpty(Sheets("Feuil_historique").Range("B" & T)) Then
    'Alors retirer la ligne T
    Sheets("Feuil_historique").Rows(T).EntireRow.Delete Shift:=xlUp
    End If
    T = T + 1
    Loop
    End Sub

  2. #2
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Points : 177
    Points
    177
    Par défaut
    Salut
    Essaie ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Sub Essai()
     
    Dim i As Integer
     
    For i = 100 To 1 Step -1
        If IsEmpty(Worksheets("Feuil_historique").Cells(i, 2)) = True Then Worksheets("Feuil_historique").Rows(i).Delete
    Next i
     
    End Sub

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    Ca ne marche pas, aucune ligne n'a été supprimée de ma feuille...

  4. #4
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Points : 177
    Points
    177
    Par défaut
    Chez moi ca marche parfaitement
    remplace le 100 par le numero de ta dernière ligne
    On est bien d'accord, il supprime toutes les lignes pour lesquelles la cellule de la colonne B (càd 2) est vide?

    Est ce que c'est bien le bon nom de feuille, fais attention à la syntaxe quand tu utilises des noms comme ca. Le plus sûr est d'utiliser le numéro d'index de la feuille, ou bien de la sauvegarder sous une variable pour réutiliser cette variable tout au long de ta procédure.

  5. #5
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Slt,

    et simplement comme ceci en remplaçant Feuil1 par le nom de ta feuille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub effacer()
    For Each c In Sheets("feuil1").Range("B1:B" & Range("B65356").End(xlUp).Row)
    If c = "" Then c.EntireRow.Delete
    Next c
    End Sub
    A+

    EDIT: En effet le nom de ta feuille est-il:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sheets ("Feuil Historique")
    'ou
    Sheets ("Feuil_Historique")
    Attention à l'espace, si il y en a un tu le met à la place de "_"
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    Ok j'ai réussi à faire quelque chose qui marche grace à toi.

    C'était bien le bon nom de feuille, j'ai juste remplaçé le 100 par 881, mais rien ne se passait quand je lançais la macro.

    C'est l'histoire du qui faisait que ça marchait pas.

    Voilà mon nouveau code (enfin ton code) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Public Sub Essai()
     
    Dim i As Integer
     
    For i = 881 To 1 Step -1
        If Worksheets("Feuil_historique").Cells(i, 2) = "" Then Worksheets("Feuil_historique").Rows(i).Delete
    Next i
     
    End Sub
    Merci beaucoup melouille!

  7. #7
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Points : 177
    Points
    177
    Par défaut
    et si jamais ton nombre de lignes total varie, s'il n'est pas toujours À 881, tu peux aller le chercher en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Sub Essai()
     
    Dim i As Integer, DerniereLigne As Integer
     
    DerniereLigne = Range("A65536").End(xlUp).Row
     
    For i = DerniereLigne To 1 Step -1
        If Worksheets("Feuil_historique").Cells(i, 2) = "" Then Worksheets("Feuil_historique").Rows(i).Delete
    Next i
     
    End Sub
    Voilà
    Bon aprèm
    Mél

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,
    Juste pour rappeler la différence entre ce qui est "vide" (IsEmpty) et ce qui contient une chaîne de longueur nulle ...
    Ce n'est pas la même chose...
    Voilà ... dit pour rien ? .... ===>> bon ...

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    Non pas dit pour rien , mais qu'en est-ce exactement qu'une cellule est isEmpty ? Même si y'a rien dedans, elle ne l'est pas, c'est ça ?

  10. #10
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Citation Envoyé par dolin007 Voir le message
    Non pas dit pour rien , mais qu'en est-ce exactement qu'une cellule est isEmpty ? Même si y'a rien dedans, elle ne l'est pas, c'est ça ?
    Non !
    ouvrir ton aide sur le mot IsEmpty

    La fonction IsEmpty renvoie la valeur True si la variable n'est pas initialisée ou contient une valeur de type Empty ; dans le cas contraire, elle renvoie la valeur False
    Une cellule qui contient une chaîne de longuueur nulle n'est pas une cellule contenant une valeur de type Empty

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    Ca roule, merci ucfoutu !

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

Discussions similaires

  1. [XL-2007] Doublon supprimer si une cellule est vide
    Par BRUNO71 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/12/2013, 18h04
  2. Réponses: 2
    Dernier message: 13/11/2007, 10h19
  3. comment verifier si la cellule est vide
    Par k-eisti dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/04/2007, 13h40
  4. Réponses: 2
    Dernier message: 06/04/2007, 13h31
  5. Tester si une cellule est vide
    Par amka dans le forum Access
    Réponses: 1
    Dernier message: 09/08/2006, 15h58

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