Fusion cellulle sur une colonne / Nbr de cellule variable

  • Initiateur de la discussion Initiateur de la discussion ted1057
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ted1057

XLDnaute Occasionnel
Bonjour,

Je réalise actuellement un planning de production ou j'y insére différents suivis dont notamment celui de la sous-traitance.
Une affaire peut avoir 0 à x sous-traitants.

J'ai un planning qui recense toutes mes affaires. J'utilise une extraction de la partie sous-traitance de ce planning afin d'avoir un tableau récap des sous-traitances pour un dossier et également pouvoir les envoyer au sous-traitants (dans un deuxième temps)

je rencontre deux problèmes dans l'exemple situé dans mon fichier Excel.
Le premier, lors de l'apparition de deux affaires n'ayant qu'une seule sou-traitance, bug de la macro (macro qui tourne en boucle)
le second, lors de la fusion de la "dernière affaire", fusion à "l'infini".

Auriez vous des pistes de réflexions à ce sujet?
 

Pièces jointes

Dernière édition:
Re : Fusion cellulle sur une colonne / Nbr de cellule variable

Bonjour Ted,

Comment lances -tu la macro ?

Plutot , quelle est la macro concernée ?

Je vois pas de bouton , apparement pas d'évenementiel non plus c'est pas grave en soit ,

Mais en principe cela permet de retrouver la macro posant problème .

Cordialement
 
Re : Fusion cellulle sur une colonne / Nbr de cellule variable

bonjour,
j'ai mis un bouton pour le lancement de la macro

Ma macro beug à deux endroits.
Quand deux lignes se suivent sans "besoin" de fusion
a la fin de la colonne, fusion "infinie"
 

Pièces jointes

Re : Fusion cellulle sur une colonne / Nbr de cellule variable

Ted ,

Je vois mieux ,

Peut être en cherchant la derniere ligne de la colonne G

Derligne_G = sheets("Suivi S-T").range("G" & rows.count).end(xlup).row

puis limiter la zone couverte par cette valeur

Veux-tu que je pousse plus loin l'écriture de cette macro ou explores tu toi même cette possibilité ?
 
Re : Fusion cellulle sur une colonne / Nbr de cellule variable

Bonjour,

Ta macro merge_cellule_suivi peut être vue comme comportant trois parties :
- récupération du nombre de lignes des colonnes G et C,
- fusion du dernier groupe de cellules de la colonne C, puis fusion du dernier groupe de cellules de la colonne D, puis de la colonne E et enfin de la colonne F,
- tentative de fusion des groupes de cellules de la colonne C, puis idem pour les colonnes D puis E et enfin F.


Je pense qu'il y a déjà une petite erreur dans la deuxième partie, mais ça fonctionne tout de même parce qu'il y a le même nombre de lignes à fusionner dans le bas de chaque colonne.

- Soit le nombre de cellules à fusionner en bas de chaque colonne est obligatoirement le même pour les 4 colonnes, et il n'est alors pas la peine de recalculer la valeur finale de la variable i, donc la boucle While peut être faite avant la boucle For.

- Soit le nombre de cellules à fusionner en bas de chaque colonne peut être différent d'une colonne à l'autre, et il faut alors recalculer la valeur finale de la variable i, mais pour cela il ne faut pas oublier pour chaque colonne de repartir de la dernière ligne, et donc de redonner à la variable i sa valeur de départ juste avant la boucle While.


La troisième partie de la macro est pour moi beaucoup plus obscure et me semble fausse dans la logique de fonctionnement (en particulier les deux boucles While qui se suivent).
 
Dernière édition:
Re : Fusion cellulle sur une colonne / Nbr de cellule variable

en effet, il y a plusieurs partie dans mon code,

une première pour faire la fusion de la fin de la colonne (cela me posait problème)
une deuxième ou je commence au départ pour la fusion des autres colonnes.
=> Chaque fusion,partant d'une même ligne, est identique

J'ai utilisé les deux boucles while pour rechercher une ligne non vide puis le total de ligne vides qui suivent pour effectuer la fusion.
A défaut d'utiliser un bon code, j'ai chercher à contourner mon problème, sans succés.

Ma macro plante quand deux lignes se suivent sans fusion à effectuer
 
Re : Fusion cellulle sur une colonne / Nbr de cellule variable

Je peux te proposer, et t'expliquer si besoin est, un code qui fonctionne.

En ce qui concerne les bornes, tu les as déjà :
- tu commences à la ligne 4,
- tu termines à la ligne ligne_finale.
Tu peux donc t'en servir pour ne pas boucler à l'infini. 😉
 
Re : Fusion cellulle sur une colonne / Nbr de cellule variable

Vu mes connaissances, ce bout de code n'est certainement pas ce qui se fait de mieux, mais il semble fonctionner.

VB:
Sub Merge2()
Dim LigneDeDepart As Long, LigneDeFin As Long
Dim LigneEnCours As Long, ColonneEnCours As Long
Dim LigneDebutZone As Long, LigneFinZone As Long

    LigneDeDepart = 4
    LigneDeFin = Range("B2").Value + 3

    For ColonneEnCours = 3 To 6

        LigneEnCours = LigneDeDepart

        While LigneEnCours <= LigneDeFin

            If Cells(LigneEnCours, ColonneEnCours) <> "" Then
                LigneDebutZone = LigneEnCours
                LigneEnCours = LigneEnCours + 1
            Else
                LigneFinZone = Cells(LigneDebutZone, ColonneEnCours).End(xlDown).Row - 1
                If LigneFinZone > LigneDeFin Then LigneFinZone = LigneDeFin
                Range(Cells(LigneDebutZone, ColonneEnCours), Cells(LigneFinZone, ColonneEnCours)).Merge
                LigneEnCours = LigneFinZone + 1
            End If

        Wend

    Next ColonneEnCours

End Sub

Je n'ai pas bien compris : les groupes de cellules sont-ils obligatoirement les mêmes dans les quatre colonnes ?
C'est-à-dire, si on fusionne par exemple les lignes 9 à 14 de la colonne C, aurra-t-on obligatoirement aussi les lignes 9 à 14 des colonnes D, E et F à fusionner ?
 
Dernière édition:
Re : Fusion cellulle sur une colonne / Nbr de cellule variable

bonjour,

ta macro fonctionne très bien merci, c'est tellement simple par rapport à ce que j'ai pu faire. Dur dur quand on a appris sur le tas, on fait des erreurs qu'on répète inlassablement tant que les macros fonctionnent et qui sont en réalité de vraies usines à gaz

oui on a les mêmes de nombres de cellules pour chaque fusion, les informations qui sont dans mon fichier proviennent d'un planning de production. Je récupère les informations liées à l'affaire ainsi que toutes les sous-traitances pou effectuer un tableau récap
 
Re : Fusion cellulle sur une colonne / Nbr de cellule variable

Si les plages de lignes à fusionner sont les mêmes dans les quatre colonnes, alors on peut déplacer la boucle For pour n'effectuer qu'une seule fois (au lieu de quatre fois) la recherche de zones à fusionner.

VB:
Sub Merge2()
Dim LigneDeDepart As Long, LigneDeFin As Long
Dim LigneEnCours As Long, ColonneEnCours As Long
Dim LigneDebutZone As Long, LigneFinZone As Long

    LigneDeDepart = 4
    LigneDeFin = Range("B2").Value + 3

    LigneEnCours = LigneDeDepart

    While LigneEnCours <= LigneDeFin

        If Cells(LigneEnCours, 3) <> "" Then
            LigneDebutZone = LigneEnCours
            LigneEnCours = LigneEnCours + 1
        Else
            LigneFinZone = Cells(LigneDebutZone, 3).End(xlDown).Row - 1
            If LigneFinZone > LigneDeFin Then LigneFinZone = LigneDeFin
            For ColonneEnCours = 3 To 6
                Range(Cells(LigneDebutZone, ColonneEnCours), Cells(LigneFinZone, ColonneEnCours)).Merge
            Next ColonneEnCours
            LigneEnCours = LigneFinZone + 1
        End If

    Wend

End Sub
Avec ce code modifié, on ne fait la recherche de zones à fusionner que dans la colonne C, et on fusionne de la même façon dans les quatres colonnes C à F.


Oui, j'ai aussi appris Excel et VBA tout seul, c'est pourquoi ce code n'est certainement pas ce qui se fait de mieux.

J'ai essayé d'utiliser des noms de variables clairs (du moins pour moi... 🙂) pour rendre le code compréhensible plus facilement, mais si tu as besoin d'explications, n'hésite pas.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour