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 :

Macro fusion des cellules vides au dessous d'une cellule non vide


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué Avatar de Yuna-
    Femme Profil pro
    Coordinatrice SIRH
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Coordinatrice SIRH
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Par défaut Macro fusion des cellules vides au dessous d'une cellule non vide
    Bonjour,

    Je joins un tableau dans lequel je voudrai intégrer une petite maccro pour simplifier la vie de ma collègue. Pour ma part j'ai beaucoup de mal à écrire mes maccros moi même (je me contente d'en déchiffrer le langage et modifier deux trois lignes, mais dans la pratique je ne sais pas en créer une de A à Z) et c'est pourquoi il me faut de l'aide.

    Je voudrais une maccro qui fusionne dans une même colonne une cellule non vide avec les cellules vide du dessous (et qui s'arrête à la prochaine cellule non vide pour recommencer).

    Par rapport à mon tableau cela voudrait dire :
    - fusionner A2:A5, B2:B5 ... idem jusqu'à la colonne H (inclus)
    - fusionner A6:A9, B6:B9... Idem toujours jusqu'à la colonne H

    Cela ne concerne que les colonnes de A à H. Je pense aussi qu'il faut s'arrêter peut être à la dernière ligne non vide pour que la dernière ligne ne soit pas fusionné avec les 60k de cellules vides restantes à la fin du tableau

    Est-ce que quelqu'un peut m'aider ?
    Je sais bien que beaucoup de personne n'aime pas la fonction fusionner sous excel mais j'ai besoin que ce document soit lisible

    Merciii
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné Avatar de Kiouane
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 198
    Par défaut
    Je te propose de t'inspirer de ce début d'idée


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each cell In Range(Ta colonne)
    If Not IsEmpty(cell) Then
    Range(cell, Cells(cell.End(xlDown).Row - 1, Numérodetacolonne)).Merge
    End If
    Next

  3. #3
    Membre habitué Avatar de Yuna-
    Femme Profil pro
    Coordinatrice SIRH
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Coordinatrice SIRH
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Par défaut
    Bonjour Kiouane,

    Pour commencer merci.

    C'est pas mal mais je pense que je dois avoir un souci avec la ligne en rouge

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub d()
    For Each cell In Range("A2:H600")
    If Not IsEmpty(cell) Then
    Range(cell, Cells(cell.End(xlDown).Row - 1, 1)).Merge
    End If
    Next
    
    End Sub
    La réaction de la maccro est la suivante :
    - Fusion de A2 : A6 comme prévu (donc A7 est non vide la maccro s'arrête tout va bien).
    - puis après avoir fusionné A2:A6 ça va fait A2:B6 et ainsi de suite jusqu'à H (j'espère que je suis claire, ce n'est pas évident à expliquer)

    Je pense que j'ai du louper quelque chose ???

  4. #4
    Membre chevronné Avatar de Kiouane
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 198
    Par défaut
    C'est normal car le code que je t'ai donné est pour faire le traitement d'une colonne. A toi de l'adapter pour une plage de données.

  5. #5
    Membre habitué Avatar de Yuna-
    Femme Profil pro
    Coordinatrice SIRH
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Coordinatrice SIRH
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Par défaut
    J'ai essayé ceci pour adapter à une plage de données mais visiblement je ne maîtrise pas "dernligne et derncolonne" un petit coup de pousse svp ?

    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
    Sub d()
     
    Worksheets("test").Activate
     
    Dim maPlage As Range
    Dim DernLigne As Long, DernColonne As Integer
     
    DernColonne = Cells(8, Cells.Columns.Count).End(xlToLeft).Column
    Set maPlage = Range(Cells(1, 1), Cells(DernLigne, DernColonne))
     
    For Each Cell In maPlage
    If Not IsEmpty(Cell) Then
    Range(Cell, Cells(Cell.End(xlDown).Row - 1, 1)).Merge
     
    End If
    Next
     
    End Sub

  6. #6
    Membre chevronné Avatar de Kiouane
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 198
    Par défaut
    Voilà un code adapté à ton fichier posté hier. Mais je suis sûr qu'il y a mieux à faire. C'est juste pour te dépanner.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Sub d()
    Application.ScreenUpdating = False
     
    Application.DisplayAlerts = False
     
    Dim maPlage As Range
    Dim DernLigne As Long, DernColonne As Integer
     
    DernLigne = Range("I" & Rows.Count).End(xlUp).Row - 1 'Pour avoir le bon numéro de ta dernière ligne j'ai pris la colonne i où il y a le plus de données
    DernColonne = Range("A1").End(xlToRight).Column
    Set maPlage = Range(Cells(2, 1), Cells(DernLigne, DernColonne))
     
    For Each cell In Range(Cells(DernLigne + 1, 1), Cells(DernLigne + 1, DernColonne))
    cell.Value = "X"
    Next
     
    For Each cell In maPlage
    If Not IsEmpty(cell) Then
    Range(cell, Cells(cell.End(xlDown).Row - 1, cell.Column)).Merge
    End If
    Next
     
    Cells(DernLigne + 1, 1).EntireRow.Delete
     
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
     
     
    End Sub

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/10/2015, 17h20
  2. Réponses: 2
    Dernier message: 13/05/2014, 20h58
  3. [XL-2003] VBA supprimer des ligne selon la date d'une cellule
    Par Scrabblouille dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/08/2009, 22h37
  4. Réponses: 3
    Dernier message: 16/10/2007, 16h25
  5. Supprimer toutes les lignes en dessous d'une cellule
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/08/2007, 13h50

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