VBA Supprimer lignes entières à partir de première cellule vide
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

VBA Supprimer lignes entières à partir de première cellule vide



  1. #1
    invitedbed1396

    VBA Supprimer lignes entières à partir de première cellule vide


    ------

    Bonjour à tous,

    Je vous explique ma recherche.

    Je recherche un bout de code VBA, pour ensuite l'incorporer dans une macro.

    Ce code je voudrais qu'il me supprime 20 lignes vers le bas, en partant de la première cellule vide d'une colonne.

    J'ai fait une macro, cela fonctionne sauf que la plage des lignes supprimées, reste toujours la même, or, il faut que celle-ci suive l'allongement de la liste.

    J'ai voulu modifier cette macro, voici ci-dessous cette macro modifiée, j'ai mis "A65536" au lieu de la plage qui était faite lors de l'enregistrement de la macro, mais cela ne donne rien.

    Rows("A65536").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp

    J'ai vainement cherché sur le net, mais je n'ai rien trouvé qui corresponde à ma recherche, si quelqu'un connait la solution à mon problème, ce serait sympa qu'il me donne la solution.

    Merci par avance de votre aide.

    Cordialement

    Dubdub22

    -----

  2. #2
    Dormeur74

    Re : VBA Supprimer lignes entières à partir de première cellule vide

    1) Je récapitule pour être certain d'avoir bien compris : si on scanne la colonne A et que la cellule A47 est vide, on supprime les lignes 48 à 67 ?
    2) On est bien d'accord sur les termes : on supprime les lignes ; on ne les vide pas ?

  3. #3
    invitedbed1396

    Re : VBA Supprimer lignes entières à partir de première cellule vide

    Bonjour Dormeur,

    Effectivement on supprime les lignes, maintenant si vous avez la formule pour uniquement vider les cellules, cela me va aussi.

    Pour ce qui est de la plage, c'est si A47 est vide on supprime (ou vide) les lignes 47 à 66.

    Je vais vous dire pourquoi cela ne me gene pas supprimer ou vider.
    En fait c'est lorsque je recopie une plage de cellules avec ma macro, les cellules réceptrices se suivent, mais lorsqu'il y a des formules, il y a des décalages (ou trou si vous préférez).

    Imaginez une facture, vous avez 20 lignes de renseignements possible, si vous utilisez 2 lignes, il y a 18 blanches, mais le problème, c'est que lorsque je recopie ces cellules rien n'apparait dans les cellules receptrices, et pourtant la recopie d'après se fait en présentant un trou de 18 lignes, pour les colonnes avec formules alors que pour les autres colonnes (sans formules) elles se recopient sans trous.
    Alors si vous avez une formule pour effacer 20 lignes vers le bas en partant de la première cellule vide je suis preneur.

    Pourtant lorsque j'ai créé ma macro j'ai bien choisi "coller Valeurs", je ne comprends pas.

    Merci d'avance pour votre aide.

    Cordialement

    Dubdub22

  4. #4
    Dormeur74

    Re : VBA Supprimer lignes entières à partir de première cellule vide

    Problème très intéressant pour ceux qui aiment VBA. VBA (comme VB jusqu'à la version 6.0 au moins) présente une tare terrible, celle de rafraîchir les tableaux sur chaque opération. Par exemple si tu veux supprimer les lignes 28 à 30 et bien il faut supprimer les lignes 28, 28 et 28. Même le bossu de Notre-Dame dirait "stupido !". Malheureusement, c'est la main qui doit se faire à l'outil et pas l'inverse.

    Dans une feuille où on a entré dans la colonne A les valeurs allant de 1 à 65536 et où on vide la cellule A47, les lignes 47 à 66 seront supprimées.

    Code:
    Sub Macro1()
        Dim Ligne As Long
        Dim I As Long
        
        ' Selectionne la première cellule du tableau
        Range("A1").Select
        
        Ligne = 1
        ' Recherche d'une cellule vide
        Do
            Ligne = Ligne + 1
            Selection.Offset(1, 0).Select
        Loop Until Ligne = 65536 Or IsEmpty(ActiveCell)
        
        If Ligne = 65516 Then
          MsgBox "Il n'y a pas de cellule vide dans la colonne A"
        Else
          For I = 1 To 20
            'On vire toujours la même ligne
            Rows(Ligne).Delete Shift:=xlDown
          Next I
        End If
    End Sub

  5. A voir en vidéo sur Futura

Discussions similaires

  1. VBA Excel Sélection d'un cellule sous condition
    Par inviteaf4313d7 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 06/01/2011, 19h36
  2. copie de cellule vers la droite sur excel (VBA)
    Par invited686cccc dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 27/10/2010, 13h58
  3. Supprimer 4 lignes sur 5 dans Excel (VBA)
    Par invite639d22c6 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 03/06/2010, 12h51
  4. Supprimer des lignes dans un fichier .dat
    Par invite71b1f7de dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 30/03/2010, 09h42
  5. copie plage cellule excel VBA
    Par invite77ab9c11 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 06/11/2009, 08h39