défusionner des colonnes puis suppression ! VBA

gopo

XLDnaute Junior
Bonjour a tous !

Je cherche a faire un programme qui consiste a : quand je selectione une ligne mon programme lit toutes les cellules selectionnées puis il défusionne les celulles fusionnées, et supprime les collone qui ne servent plus a rien, c'est a dire celles qui étaient a droite ( ex A, B, C fusionné, il supprime B & C vu que l'information reste en A aprés le défusionnage ! )

Je ne demande pas le code pour ce programme, je demande une aide, algorithme, fonction en VBA permettant de travailler sur une selection , un défusionnage etc.. quelque chose qui m'aiderai sans me faire le travail, par la suite je redemanderai une aide certe si je n'y arrive pas.


ps : ci joint le classeur d'exemple feuill1 avant le programme feuill2 apres.
dans le classeur join, je selectionne la ligne A et il fait ce que je veux.

Cordialement !
 

Pièces jointes

  • Nouveau Feuille de calcul Microsoft Excel.xls
    16.5 KB · Affichages: 111
  • Nouveau Feuille de calcul Microsoft Excel.xls
    16.5 KB · Affichages: 113
  • Nouveau Feuille de calcul Microsoft Excel.xls
    16.5 KB · Affichages: 113

porcinet82

XLDnaute Barbatruc
Re : défusionner des colonnes puis suppression ! VBA

Salut,

C'est tres bien de vouloir essayer et ne pas demander la réponse toute faite !!!!
Alors pour t'aider, je te dirai simplement d'utiliser l'enregistreur de macro. Pour l'utiliser, il faut avoir la barre Visual Basic d'afficher ou alors, tu fais Outils/Lacro/Nouvelle macro

Ensuite, tu executes les taches que tu veux, comme la fusion/défusion et la suppresion de colonne, et tu arretes l'enregistrement de la macro.
Pour aller le voir généré, tu fais Alt+F11 et tu verras ton code.
A partir de la, si tu es un peu débrouillard, tu devrais arriver a quelque chose.

Tu reviens nous voir avec ce que tu as trouvé et on t'aidera à l'optimiser un peu si nécessaire...

Bon courage,

@+
 

gopo

XLDnaute Junior
Re : défusionner des colonnes puis suppression ! VBA

Re,

J'ai ceci :

Code:
Sub fusion_supprimé()
'
' fusion_supprimé Macro
' Macro enregistrée le 06/11/2008 par IDCO1
'
' Touche de raccourci du clavier: Ctrl+o
'
    Range("F1:H1").Select
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    Selection.UnMerge
    Range("G:G,H:H").Select
    Range("H1").Activate
    Selection.Delete Shift:=xlToLeft
End Sub

Les problemes sont :

1/ A la place de ceci il faudrait qu'une variable ( je pense ) intervienne pour y rentré la range de la selection faite a la souris
Range("F1:H1").Select

2/ Pour améliorer le programme est il possible de lui faire faire ceci : je selection une ligne ou il y a 200 colonnes puis mon programme défusionne les endroit fusionné et supprime les colonne en trop ( celle ou il n'y aura plus de donnée )

3/ Merci !
 

porcinet82

XLDnaute Barbatruc
Re : défusionner des colonnes puis suppression ! VBA

re,

Bon, voici la solution à ton problème (j'ai pas trop le temps aujourd'hui pour les commentaires) :
Code:
Sub fusion_supprimé()
Dim lig As Integer, j As Integer
lig = Selection.Row
With Rows(Selection.Row)
    .UnMerge
    For j = 200 To 1 Step -1
        If Cells(lig, j).Value = "" Then Cells(lig, j).Delete Shift:=xlToLeft
    Next j
End With
End Sub

Je te laisse le décortiquer un peu et si tu as des questions, n'hesites pas.

@+
 

gopo

XLDnaute Junior
Re : défusionner des colonnes puis suppression ! VBA

Niquel j'ai juste modifié un truc, pour que mon programme supprime toute la colonne !

Sub defusion()
'
' defusion Macro
' de-fusionne puis supprime !
'
' Touche de raccourci du clavier: Ctrl+Maj+T
'
Dim lig As Integer, j As Integer
lig = Selection.Row
With Rows(Selection.Row)
.UnMerge
For j = 20 To 1 Step -1
If Cells(lig, j).Value = "" Then Columns(j).Delete Shift:=xlToLeft
Next j
End With
End Sub
 

gopo

XLDnaute Junior
Re : défusionner des colonnes puis suppression ! VBA

J'ai 2 soucis, je suis obligé de lancer mon programme 2 fois pour avoir ce que je veux( ca défusionne pas tout directement ).

Puis mon programme se fait sur toute la ligne alors que je voudrais que cela soit fait sur la selection seulement !... sinon je perd mes Titres .

Ci joint mon fichier, je lance mon programme sur la selection "P9 à AA9".

le code :
Sub defusion()
'
' defusion Macro
' de-fusionne puis supprime !
'
' Touche de raccourci du clavier: Ctrl+Maj+T
'
Dim lig As Integer, j As Integer
lig = Selection.Row
With Rows(Selection.Row)
.UnMerge
For j = 20 To 1 Step -1
If Cells(lig, j).Value = "" Then Columns(j).Delete Shift:=xlToLeft
Columns(j).EntireColumn.AutoFit
Next j
End With

End Sub

edit : lig = Selection.Row a la place de ceci il faudrait que je donne les limites de ma selection et non la ligne de selection... comment faire?
Merki d'me lire ! :D
 

Pièces jointes

  • TBRM_34_-_ACP_TB_Mensuel_Systeme_Management.xls
    27 KB · Affichages: 165
Dernière édition:

porcinet82

XLDnaute Barbatruc
Re : défusionner des colonnes puis suppression ! VBA

Salut,

Attend, repose bien la question de ce que tu veux exactement parce que tu demandes un truc qui ne correspond en faite pas a ce qu'il faut vraiment pour ton projet, tu fais des modifs dans le code et ensuite tu te plains que ca ne fonctionne pas !!!!

Parce que sur le fichier joint, je ne vois pas de cellules fusionnées et je ne comprend pas ton histoire de sélection. Une sélection, c'est lorsque les cellules sont sélectionnées, sinon il s'agit d'une plage de travail...

J'attend quelque chose d'un peu plus précis pour ne pas travailler une nouvelle fois dans le vide !!!

@+
 

gopo

XLDnaute Junior
Re : défusionner des colonnes puis suppression ! VBA

Re, déjà désolé puis,

Sur le fichier joint il y des celulles fusionnés... cellule Janvier : P9 / cellule d'Avril T9

Selectionné pour moi c'est claire, c'est quand on selectionne avec le curseur... enfin quand c'est bleu quoi ...selectionné !

Peut être suis je plus claire en disant : Je voudrais effectuer mon programme seulement sur les colonne selectionnée .
tu fais des modifs dans le code et ensuite tu te plains que ca ne fonctionne pas !!!!
Euh... une trentaine de caractere de modifié, qui ne change pas énormement le programme, et je ne me plaint pas ! :/

Merci a toi, désolé de ne pas être tres claire, je pensais l'être, je ne le suis plus !
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : défusionner des colonnes puis suppression ! VBA

Bonsoir,

Salut Romain.... :)

un petit code à essayer :

Code:
Sub Macro1()
With Range("A9:AA" & [H65000].End(xlUp).Row)
    .UnMerge
    .SpecialCells(xlCellTypeBlanks).Delete
End With
Cells.EntireColumn.AutoFit
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 610
Messages
2 090 206
Membres
104 452
dernier inscrit
hamzamounir