Fusionner cellule avec cellule(s) du bas si vide (VBA)

lolobala

XLDnaute Nouveau
Bonjour à tous

Étant débutant en vba, (je m'y intéresse depuis peu) j'ai du mal à faire ce que je veux.
Dans mon cas je souhaiterai fusionner mon numéro de rep. avec les cellules vides en dessous.
Dans mon exemple B2 sera fusionner avec B3 et B4 sera fusionner avec B5 et B6.

J'espère avoir été assez clair.

Merci pour votre aide.
 

Pièces jointes

  • exemple.xlsx
    8.9 KB · Affichages: 142
  • exemple.xlsx
    8.9 KB · Affichages: 156
  • exemple.xlsx
    8.9 KB · Affichages: 161

lolobala

XLDnaute Nouveau
Re : Fusionner cellule avec cellule(s) du bas si vide (VBA)

Re bonjour

N'ayant pas de réponse je continu mes recherches,
J'ai trouve des choses intéressante mais c'est pas ce qu'il me faut.
La plupart du temps on trouve des fusions de cellule identiques. Dans mon cas c'est différent car les cellules sont vide, c'est ce qui fait toute la complexité de la chose.
Personne ne veut m'aider, je suis a cour d'idée.
Faut il absolument que les cellules soit pleine ?
Faut il comparer avec d'autres critères ?
Merci pour vos reponse
 

Modeste

XLDnaute Barbatruc
Re : Fusionner cellule avec cellule(s) du bas si vide (VBA)

Bonsoir lolobala,

Le problème des maigres réponses vient peut-être du fait qu'on conseille souvent aux utilisateurs d'éviter les cellules fusionnées ;)

En partant du principe que tu sais ceque tu fais, une proposition (à placer dans un module standard) testée sur ton fichier (des tests approfondis seraient utiles):
VB:
Sub fusionBeurk()
With Sheets(1)
    For Each c In .Range("B1:B" & .Range("B" & Rows.Count).End(xlUp).Row - 1)
        Range(c, c.End(xlDown).Offset(-1, 0)).Merge
    Next c
End With
End Sub
 

lolobala

XLDnaute Nouveau
Re : Fusionner cellule avec cellule(s) du bas si vide (VBA)

Bonsoir modeste et merci pour ta réponse.
Je commençai un peu à désespérer.

Le problème des maigres réponses vient peut-être du fait qu'on conseille souvent aux utilisateurs d'éviter les cellules fusionnées

J'ai lu ça dans plusieurs discussions, mon avis est partagé car si microsoft met cet outil à disposition c'est bien qu’il peut servir.
Bref ce n'est pas le sujet, pour ma part je m'en servirait que pour une mise en forme. Visuellement je trouve ça plus sympa. Et puis dans mon exemple il n'y a que 6 lignes, alors que tout les jours je peux en avoir facilement 50 à traiter.
Malgré tout je comprend que cette méthode peut être risqué, d'ou le nom de fusion beurk ;)

J'ai testé ta solution tout marche bien. Je n'ai pas réussi à faire mieux, pourtant ton code parait simple.

Je vais en profiter pour poser une ultime question, ça n'a rien à voir avec les fusions de cellules.
Je sais ça ne se fait pas, mais promis je ne recommencerai pas.

Est-ce qu'il y a un moyen de convertir les 2 dernières colonnes en nombre par une macro ?

Bonne soirée et encore merci.
 

lolobala

XLDnaute Nouveau
Re : Fusionner cellule avec cellule(s) du bas si vide (VBA)

Oups j'ai parlé trop vite j'ai fait des tests plus approfondie...et la ça coince.
Milles excuses. Dans le cas ou je n'ai pas de cellule vide excel me les fusionnes quand même.
Ci-joint 2 exemples.
 

Pièces jointes

  • exemple_cas1.xlsx
    8.9 KB · Affichages: 123
  • exemple_cas2.xlsx
    9 KB · Affichages: 109

lolobala

XLDnaute Nouveau
Re : Fusionner cellule avec cellule(s) du bas si vide (VBA)

Bah tant pis

Je me suis débrouillé autrement et ça marche.
Dans les précédentes discussion j'ai trouvé ça :

Code:
Private Sub CommandButton3_Click()
Dim Col, i
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Col = 1 To 3
   For i = Cells(Rows.Count, Col).End(xlUp).Row To 2 Step -1
        If Cells(i, Col) = Cells(i - 1, Col) Then Range(Cells(i, Col), Cells(i - 1, Col)).MergeCells = True
    Next i
Next Col
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Alors à partir de ce code je me suis arrangé avec une formule pour que les cellules ne soient pas vides.
Les cellules vides récupèrent la valeur précédente.

Voilà merci quand même à toi modeste, d'avoir pris le temps de réfléchir à mon problème.
Pour l'autre question que je te posai plus haut dans la discussion, laisse tomber je posterai un nouveau message dans une autre discussion.

Au revoir à bientôt.

Et au faite j'avais oublié.
Bonne et heureuse année 2012 à tout le monde !!!
Quelle soit riche en nouveaux codes et formules !!!
 

Modeste

XLDnaute Barbatruc
Re : Fusionner cellule avec cellule(s) du bas si vide (VBA)

Bonjour lolobala,

Faute d'autre prétendant :D, un autre essai:
VB:
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
... A tester de nouveau soigneusement!
Il doit être possible de faire mieux, mais vois toujours avec ça.
 

lolobala

XLDnaute Nouveau
Re : Fusionner cellule avec cellule(s) du bas si vide (VBA)

Bonjour Modeste

Ton code marche parfaitement bien, il répond exactement à mes attentes.
Je l'ai testé avec tout les cas possibles et rien ne bug.

Merci beaucoup Modeste.
Bonne continuation.
 

Discussions similaires

Statistiques des forums

Discussions
312 504
Messages
2 089 085
Membres
104 023
dernier inscrit
zerarka mohamed