VBA Fusion automatique complexe

Jeremy992

XLDnaute Occasionnel
Bonjour le forum,

Voila je vous explique mon problème:
Je remplie la première cellule vide de la colonne A via un Userform, jusque la pas de problème.
Seulement j'aimerais qu'a chaque nouvelle entrée la ligne remplie ce fusionne avec la ligne du dessous, afin d'avoir, pour chaque "Nom", deux ligne.


Bon je sais que ce ne doit pas être très clair alors je joint un petit fichier exemple ;)

Merci à ceux qui prendront le temps de me lire et de me répondre !
 

Pièces jointes

  • Classeur1.xlsm
    25.9 KB · Affichages: 27
  • Classeur1.xlsm
    25.9 KB · Affichages: 22
  • Classeur1.xlsm
    25.9 KB · Affichages: 30
Dernière édition:

Nairolf

XLDnaute Accro
Re : VBA Fusion automatique complexe

Salut Jeremy992, salut le forum,

Je te propose la modification suivante dans ton code:
Code:
Private Sub CommandButton1_Click()
Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = TextBox1.Value

With Range(Range("A" & Rows.Count).End(xlUp), Range("A" & Rows.Count).End(xlUp).Offset(1, 0))
    
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    .MergeCells = True
    
End With

Unload Me
End Sub
 

Jeremy992

XLDnaute Occasionnel
Re : VBA Fusion automatique complexe

Bonjour Nairolf,

Merci beaucoup de ton aide, cela marche parfaitement (du coup je me sens vraiment redevable... ^^).

Plus qu'a trouver comment faire mes bordures et ce sera parfait !

Au passage, si tu as une petite idée?? ;)
Mais je voudrais pas abuser, c'est déjà génial d'avoir ta solution !!

Merci mille fois, Mr Nairolf !
 

Nairolf

XLDnaute Accro
Re : VBA Fusion automatique complexe

En fait, pour faire ce genre de codes simples, il y a plusieurs façons:
- rechercher sur internet et dans l'aide excel les méthodes et propriétés te permettant de réaliser ce que tu veux : là, il faut bien utiliser les termes d'Excel pour avoir des résultats satisfaisants.
- utiliser l'enregistreur de macros : c'est bien pour toutes les choses simples, mais ça rajoute souvent des méthodes qui ne t'intéressent pas

Tu trouveras ci-dessous un exemple du deuxième cas qui répond à ta demande (j'ai volontairement indiqué des infos que tu dois connaître mais qui peut être utiles pour d'autres):
1/ Mettre l'enregistreur de macro en route (Onglet Développeur sur Excel2010)
2/ Faire que tu souhaites automatiser (dans ton cas, encadrer une cellule)
3/ Arrêter l'enregistreur (bouton stop)
4/ Epurer le code fourni par l'enregistreur (Onglet Développeur sur Excel2010/Visual Basic, ouvrir le dernier module dans l'arborescence du projet)

Dans notre cas (encadrement extérieur simple noir à partir d'une cellule sans mise en forme de bordure) faire les points 1/, 2/ et 3/ donnent ceci:

Code:
Sub Macro6()
'
' Macro6 Macro
'

'
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
End Sub
Ce qui fait beaucoup de lignes pour pas grand chose, le point 4/ peut donner ceci par contre (mais là c'est à toi de faire le distingo entre les méthodes):
Code:
Sub Macro6()

Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous
Selection.Borders(xlEdgeTop).LineStyle = xlContinuous
Selection.Borders(xlEdgeBottom).LineStyle = xlContinuous
Selection.Borders(xlEdgeRight).LineStyle = xlContinuous

End Sub
A noter que l'enregistreur à beaucoup de défauts, mais il permet de se familiariser facilement avec des méthodes tout en apprenant à épurer le code et à le commenter (mon point faible).
 

Discussions similaires

Statistiques des forums

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