Fusion cellules si cellule du bas vide sauf pour la dernière ligne !

samimi94

XLDnaute Occasionnel
Bonsoir,

Je souhaite fusionner les cellules des colonnes S, T, U dès lors que la colonne du dessous est vide, sans fusionner la dernière ligne car par la suite je la complèterai avec de nouvelles données sauf si en colonne A il y a une information.

Ex : Si S3 est pleine et S4 vide, alors fusionner la cellule S3 et S4, et ainsi de suite jusqu'à la dernière ligne pleine.

J'ai trouvé un bout de code sur le site qui devait répondre à mon besoin mais cela ne fonctionne pas.

Code:
Sub fusion()
With Sheets(1)
     lig = .Range("B" & Rows.Count).End(xlUp).Row - 1
     r = 1
     Do
     i = 0
         Do
         If .Cells(r + i + 1, 2) = "" Then i = i + 1
     Loop While .Cells(r + i + 1, 2) = ""
     .Range(.Cells(r, 2), .Cells(r + i, 2)).Merge
     r = r + 1
     Loop While r < lig
End With
End Sub

De plus si je peux abuser, j'ai en colonne A (qui est masqué) le nom des onglets d'où proviennent les données, je souhaiterai, que toutes les lignes qui ont la même informations dans cette colonne soient colorées.

Dans mon exemple, les lignes 3 et 4 ont la même valeur en colonne A, dans ce cas je les colore en gris par exemple.
La ligne 5 serait bleu et la 6 verte.

Je mets en PJ un fichier qui ressemble au mien avec des données bidons.

Merci pour votre aide.

Samimi
 

Pièces jointes

  • test.xlsx
    12.5 KB · Affichages: 39
  • test.xlsx
    12.5 KB · Affichages: 39
  • test.xlsx
    12.5 KB · Affichages: 41

Yaloo

XLDnaute Barbatruc
Re : Fusion cellules si cellule du bas vide sauf pour la dernière ligne !

Bonsoir Samimi94,

Voila déjà la macro modifiée, le N° de feuille n'était pas correcte, il s'agit de la feuille dont l'index est 5 et non 1, la colonne S est la porte le N° 19 et non 2.
VB:
Sub fusion()
Dim lig&, r&, i&
With Sheets(5)
     lig = .Range("E" & Rows.Count).End(xlUp).Row - 1
     r = 1
     Do
     i = 0
         Do
         If .Cells(r + i + 1, 19) = "" Then i = i + 1
     Loop While .Cells(r + i + 1, 19) = ""
     .Range(.Cells(r, 19), .Cells(r + i, 19)).Merge
     r = r + 1
     Loop While r < lig
End With
End Sub

Pour ton deuxième point, voir peut-être avec les mises en forme conditionnelle.

A+

Martial
 

samimi94

XLDnaute Occasionnel
Re : Fusion cellules si cellule du bas vide sauf pour la dernière ligne !

Bonjour Yaloo,

Merci d'avoir pris le temps de te pencher sur mon problème.

Je viens de tester le code et celui-ci fonctionne parfaitement, cependant, lorsque dans la colonne S toutes les cellules du bas sont vides, dont la dernière, il bug et refuse de faire la fusion.

La fusion fonctionne uniquement si dans la colonne S de la dernière ligne il y a une donnée.

De plus, j'utilise déjà une macro et lorsque je clique dessus elle réinitialise mon classeur, or après la fusion il refuse de réinitialiser mon classeur. Y-a-t-il un moyen de contourner cela en supprimant les cellules fusionnées ormis mes deux lignes d'en-têtes ?

Voici le code que j'utilise avant d'exécuter la fusion de certaines cellules via ton code :

(D'ailleurs il me dit que la variable Lig est déjà utilisée par conséquent j'ai copié ton code dans un autre module, comment l'intégrer au module existant).

Code:
ligne = 3
    For Each f In ActiveWorkbook.Sheets
      s = f.Name
      If s Like "Synt*" Then
        For lig = 1 To Sheets(s).[C65000].End(xlUp).Row
          If Sheets(s).Cells(lig, 1) <> "" Then
            Sheets(s).Cells(lig, 1).Resize(, 25).Copy
            Sheets("Base").Cells(ligne, 3).PasteSpecial Paste:=xlValues
            Sheets("Base").Cells(ligne, 1) = s
            ligne = ligne + 1
          End If
        Next lig
      End If
    Next

Enfin est-il possible de supprimer le message qui me dit que les données vont être fusionnées ?

Merci pour tout et désolée pour mon manque de connaissance.

Samimi.
 

gosselien

XLDnaute Barbatruc
Re : Fusion cellules si cellule du bas vide sauf pour la dernière ligne !

Bonjour,

pour ma part, une fusion serait avantageusement remplacée par Format/Centrer sur plusieurs colonnes..
Les fusions créent souvent des soucis, c'est juste mon avis perso..

Patrick
 

samimi94

XLDnaute Occasionnel
Re : Fusion cellules si cellule du bas vide sauf pour la dernière ligne !

Re Gosselien,

Merci pour ton retour, mais je saisis pas ce que cela va changer !
Je souhaite avoir une même valeur pour deux lignes différentes dans la colonne S si la cellule du bas est vide, le fait de centrer ne me permet pas de voir que cette valeur est affectée à ces deux lignes.

Si tu d'autres suggestions.

Merci.
 

gosselien

XLDnaute Barbatruc
Re : Fusion cellules si cellule du bas vide sauf pour la dernière ligne !

rien au niveau du code, mais je répète que les cellules fusionnées posent souvent des problèmes...(pas nécessairement maintenant, mais à un autre moment...j'ai connu cela)

pour le code, je laisse les spécialistes VBA t'aider :)
 

samimi94

XLDnaute Occasionnel
Re : Fusion cellules si cellule du bas vide sauf pour la dernière ligne !

Gosselien,

Je sais bien que les cellules fusionnées ne sont pas la meilleure option mais là je n'ai pas le choix, la configuration de mon fichier qui veut ça.
Le code réalisé par Yaloo est très bien sauf que j'ai une erreur lorsque la cellule de la dernière ligne est vide :(

Merci quoi qu'il en soit de t'être penché sur mon problème.
 

Yaloo

XLDnaute Barbatruc
Re : Fusion cellules si cellule du bas vide sauf pour la dernière ligne !

Bonjour samimi, gosselien,

Pour gosselien, c'est vrai qu'il arrive que les cellules fusionnées posent problème, mais voulant fusionner verticalement, je pense qu'il n'y a pas d'autres méthodes que la fusion.
Pour samimi, chez moi, si la dernière cellule de la colonne S est vide, ça fonctionne quand même. Il serait bien d'avoir un fichier à l'identique de celui avec lequel tu travailles, même nb de feuille, même nom de feuille, même structure etc.... mais avec des données non confidentielles. Cela éviterai d'avoir des macros qui "s'entrechoquent", et que certaines macros plantent.

A te relire

Martial
 

samimi94

XLDnaute Occasionnel
Re : Fusion cellules si cellule du bas vide sauf pour la dernière ligne !

Bonjour le forum, bonjour Yaloo,

Désolée pour le retour tardif, j'étais en déplacement cette semaine.

Yaloo,

J'ai adapté ton code à mon fichier et ça fonctionne au niveau de la fusion, cependant, il bug lorsque dans la cellule S il n'y a pas de données vides qui se suivent.
Dès que la cellule du dessous dans S est vide il fusionne et passe aux cellules suivantes, mais si deux cellules se suivent dans la colonne S et sont renseignées il bug.
De plus le temps de traitement me semble long pourtant j'ai fait le test sur un fichier d'une vingtaine de lignes.

Enfin, est-il possible d'appliquer ce code à plusieurs colonnes sans copier coller plusieurs fois ce code en modifiant les numéros de colonnes concernées ?

Merci.

Samimi.
 

samimi94

XLDnaute Occasionnel
Re : Fusion cellules si cellule du bas vide sauf pour la dernière ligne !

Re,

Correction. En fait la macro de Yaloo fonctionne très bien, je n'avais pas fait attention à un détail ayant son importance.
En fait logiquement la dernière donnée n'est pas fusionnée avec les cellules vides du bas sans quoi elle serait fusionnée avec tout le reste du classeur de la colonne S.

Pensez vous qu'il soit possible de fusionner la dernière cellule ayant une donnée de la colonne S avec les cellules vides du bas tant que les cellules de la colonne R sont renseignées (en conservant le code de Yaloo)?

Par avance merci pour votre aide.

Bonne fin de WE à tous.

Samimi.
 

Yaloo

XLDnaute Barbatruc
Re : Fusion cellules si cellule du bas vide sauf pour la dernière ligne !

Bonsoir samimi, tout le monde,

Dans mon dernier post je te demandais un fichier identique à ton fichier réel mais sans données confidentielles.
Ma demande est toujours d'actualité, sinon difficile de comprendre exactement ta demande.

A+

Martial
 

samimi94

XLDnaute Occasionnel
Re : Fusion cellules si cellule du bas vide

Bonsoir Yaloo,

Désolée je n'avais pas vu ta demande de fichier test.

En fouillant sur le forum cet après midi j'ai trouvé un code qui réalise la même chose que le tien plus rapidement dans le traitement de la tâche, par contre le problème reste le même.

Voici un fichier test dans lequel je souhaite que les cellules de la colonne S fusionnent avec les lignes vides du bas, cependant dans la logique des choses, ma dernière donnée de la cellule S ne fusionne pas avec les cellules vides de mes dernières lignes.

Dans le fichier test S6 devrait fusionner avec S7 et S8.
Je ne sais pas comment lui dire dans le code malgré mes recherches.

Merci pour ton aide.

Samimi

Edit : Je réalise que le titre de mon message n'était pas vraiment le reflet de ma demande, j'ai donc retiré le "sauf pour la dernière ligne" de l'objet du message.
 

Pièces jointes

  • test3.xlsm
    15 KB · Affichages: 26
  • test3.xlsm
    15 KB · Affichages: 30
  • test3.xlsm
    15 KB · Affichages: 34
Dernière édition:

samimi94

XLDnaute Occasionnel
Re : Fusion cellules si cellule du bas vide sauf pour la dernière ligne !

Yaloo,

En complément, j'ai omis de te dire que lorsque je pars de mon fichier test vierge de macro et que je colle ton code
j'ai une erreur sur la ligne
Code:
Loop While .Cells(r + i + 1, 19) = ""

Merci.

Samimi
 

Discussions similaires

Statistiques des forums

Discussions
314 634
Messages
2 111 441
Membres
111 136
dernier inscrit
Ahmad Ibnou