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 :

Suppression ligne vide d'un range


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 149
    Points : 50
    Points
    50
    Par défaut Suppression ligne vide d'un range
    Bonjour,

    je copie un range d'une feuille dans une cellule d'une autre. Seulement, ce range peut comporter des cellules vides. j'aimerais savoir si il était possible de n'importer que les cellules non vide du range (sans detailler l'importation car le nb de cellules varient), ou bien quel traitement je pouvais appliquer à ma cellule d'arrivee pour supprimer les lignes vides...

    j'espere avoir ete claire et qqun pourra m'aider,

    merci beaucoup !

  2. #2
    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,

    Intéresse-toi à la propriété CountA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each z In Selection
            If Application.CountA(z.EntireRow) = 0 Then .....
    Next l
    une autre façon de s'exprimer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Application.CountA(Rows(numero_rang)) = Empty then ...
    Bonne continuation....

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 149
    Points : 50
    Points
    50
    Par défaut
    Merci beaucoup pour ta réponse, mais je n'ai pas accès à cette propriété...

    de plus, je ne veux pas traiter le problème avant l'importation, mais après, quand je dispose de ma cellule contenant plusieurs lignes de textes, dont certaines sont vides...

    Quelqun aurait une autre idée ?

  4. #4
    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
    Oui ?

    2 questions, donc :

    1) codes-tu bien sous VBA ? (une macro, donc)
    2) quelle est ta version d'Office ?

  5. #5
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Une facon de faire

    A la fin du traitement, "r" étant ta selection de cellule non vide

    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
    18
    19
     
    Dim r As Range
    Dim s As Range
     
     
     
    For Each cell In Range("A2:A5")
     
        If cell.Value <> "" Then
            On Error Resume Next
            If s.Address = "" Then
                Set r = Range(cell.Address)
            Else
                Set r = Union(Range(cell.Address), s)
            End If
            Set s = r
        End If
     
    Next

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 149
    Points : 50
    Points
    50
    Par défaut
    je code bien sous VBA, avec Excel 2003 et Visuel Basic 6.3 ...

    je n'ai pas compris ce que faisais ton code dslée

  7. #7
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    dans mon code, je retourne un range (r) sui a partir du range("A1:A5"), renvoi les cellules non vide.
    J'ai pas eu le temps d'optimiser; Il te faudra modifier dans la boucle Range("A1:A5") avec ta selection et copier r dans ta deuxieme feuille

  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
    Tu as donc accès, coco21, à cette fameuse fonction CountA !
    Qu'est-elle donc ?
    Lis ceci
    http://www.lqnet.com/Excel/CountA.asp

    Elle renvoie 0 lorsqu'elle se réfère à une cellule ou un "Range" vide (et une cellule est en soi un "Range"...

    Regarde à nouveau mon code plus haut (celui de la boucle for each), maintenant : il s'applique à une sélection, dont chacun des éléments est un rang (row). Bien ! Un rang est en soi un "range" (celui de toutes les cellules d'une même ligne). CountA appliiqué à ce "range" te renvoit 0 si le rang (le "row", donc toutes ses cellules, est vide...) . Voilà donc une manière (celle de VBA) de déterminner si un "Row" est vide et il me semble que c'est là parfaitement clair.

    Regarde enfin mon deuxième code (celui sans le for each d'une sélection, mais qui pourrait être utilisé pour une boucle For ... Next...
    Il te permet également de déterminer si un rang (row) de numéro numero_rang est vide (empty) ou non.

    Je ne crois vraiment pas que tout ceci soit du Chinois et te demande un peu de concentration.

    Bonne continuation...

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 149
    Points : 50
    Points
    50
    Par défaut
    merci bien j'ai reussi à faire ce que je voulais

    je suis partie de ton code, mais au lieu de créer un autre range, j'ai mis le contenu de chaque cellule non vide dans une chaine séparé avec chr(10)...

    merci beaucoup en tout cas,car j'avais pas penser parcourir chaque cellule de mon range...

    Encore merci !

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

Discussions similaires

  1. [XL-2010] Suppression de lignes vides dans un range donné
    Par titideszalpes dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/06/2015, 09h25
  2. Couper-Coller avec Suppression lignes vides
    Par tounsy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/05/2008, 15h40
  3. Suppression ligne vide
    Par sebys dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 04/01/2008, 14h29
  4. Probleme suppression ligne vide publipostage
    Par thierry440 dans le forum Word
    Réponses: 3
    Dernier message: 17/11/2007, 20h29
  5. [VBA-E] Probleme lenteur suppression ligne vide sur 100 lignes
    Par sebi78 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 14/05/2007, 20h24

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