Problème en VBA : fusion de cellules

Résolu/Fermé
elise.f Messages postés 10 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 25 mars 2007 - 6 nov. 2006 à 13:15
 laure - 2 nov. 2011 à 15:53
Bonjour!
J'ai un problème en vba : je souhaite mettre en forme le feuillet 2 à partir d'un bouton en feuillet 1, notamment fusionner des cellules entre elles. Est-ce que quelqu'un peut me dire s'il est possible de fusionner ces cellules SANS ACTIVER LE FEUILLET 2? (si je n'active pas le feuillet, je n'arrive pas à faire fonctionner la fonction Range). Merci à qui me répondra!
Elise

Sub FusionnerDesCellules(Feuillet As String, Ligne1 As Integer, LigneN As Integer, Colonne1 As Integer, ColonneN As Integer)

Application.DisplayAlerts = False
Worksheets(Feuillet).Activate
ActiveSheet.Range(Cells(Ligne1, Colonne1), Cells(LigneN, ColonneN)).MergeCells = True
Application.DisplayAlerts = True

End Sub
A voir également:

3 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
6 nov. 2006 à 14:34
Salut,

depuis la feuille a
    With Sheets("b")
        .Range(.Cells(1, 1), .Cells(1, 3)).Merge
    End With

C'est normal que tu ne réussi pas.
Pourquoi?

Puisque même si au début tu spécifies la feuille, n'est valable que pour Range, ensuite les Cells que tu utilises appartient toujours à la feuille active qui est a est pas à la feuille que tu veux qui est b.

Dans mon code j'ai utilisé With.. End With pour ne pas être obligé d'écrire
Sheets("b").Range(Sheets("b").Cells(1, 1), Sheets("b").Cells(1, 3)).Merge


Ton code est équivalent à
Sheets("b").Range(Sheets("a").Cells(1, 1), Sheets("a").Cells(1, 3)).Merge
qui biensûr ne fonctionne pas ;-))

lami20j
7
elise.f Messages postés 10 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 25 mars 2007 1
6 nov. 2006 à 17:11
ok merci beaucoup!
0
la première chose à faire c'est de mettre la reference excel
ici je suis en train de prendre mes données dans une base access en exportant ves une feuille excel qui a 3 collones D, E, F donc matricule , nom, sexe c'est aussi la structure de ma table access.
mais pour la collone F, je l'ai fusionnée avec les collonnes G, H,I,J,K pour afficher
je suis obligé de fusionner f avec g qui me donne F toujours après F avec H qui me donne tjrs F ainsi de suite
en voici l'exemple. si quelqu'un pourrai ameliorer cela sera bon
NB: j ai utilisé ado pour ma base donc il faut activer la réf ADO



'module
Public Cnx As ADODB.Connection
Public Rec As ADODB.Recordset
Public Sub OUVRIR()
Set Cnx = New ADODB.Connection
Cnx.Provider = "Microsoft.jet.oledb.4.0"
Cnx.ConnectionString = App.Path & "\bddetudiant.MDB"
Cnx.Open
End Sub



Private Sub Form_Load()
OUVRIR
Set Rec = New ADODB.Recordset
Rec.Open "select * from t_etudiant", Cnx, 1, 2
End Sub


Private Sub EXPO_Click()
Dim ligne As Integer
ligne = 8
Dim D As String, E As String, F As String, G As String, H As String, I As String, J As String, K As String, L As String
Dim xl As Excel.Application
Set xl = Nothing
Set xl = New Excel.Application
xl.Visible = True 'Pour afficher l'application excel
xl.DisplayAlerts = False
Call xl.Workbooks.Open("c:\exer13\etudiant") ' OUVRERTURE CLASSEUR
xl.Sheets("liste").Select ' Ouverture de la feuille
Rec.MoveFirst
xl.Range("I3") = Date
Do While Not Rec.EOF
'création cellules
D = "D" & ligne
E = "E" & ligne
F = "F" & ligne
G = "G" & ligne
H = "H" & ligne
I = "I" & ligne
J = "J" & ligne
K = "K" & ligne
L = "L" & ligne
xl.Range(D) = Rec.Fields(0)
xl.Range(E) = Rec.Fields(1)

' fusion de F à L
xl.Range(F, G).Merge
xl.Range(F, H).Merge
xl.Range(F, I).Merge
xl.Range(F, J).Merge
xl.Range(F, K).Merge
xl.Range(F, L).Merge
xl.Range(F) = Rec.Fields(2)
ligne = ligne + 1
Rec.MoveNext
Loop
2
elise.f Messages postés 10 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 25 mars 2007 1
6 nov. 2006 à 13:25
Pour info, si j'écris (au lieu d'activer, puis d'écrire Activesheet.) :

Worksheets(Feuillet).Range(Cells(Ligne1, Colonne1), Cells(LigneN, ColonneN)).MergeCells = True

ça ne marche pas! (erreur définie par l'application ou l'objet)
1
essaye avec .Cells
0
Bonjour, j'ai le même problème, j'ai essayé avec .Cells = True mais il met des VRAI dans toutes les cases !
0