Problème en VBA : fusion de cellules

Résolu
elise.f Messages postés 10 Statut Membre -  
 laure -
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

3 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
    1. elise.f Messages postés 10 Statut Membre 1
       
      ok merci beaucoup!
      0
  2. popaulkb
     
    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
  3. elise.f Messages postés 10 Statut Membre 1
     
    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
    1. Bill
       
      essaye avec .Cells
      0
    2. laure
       
      Bonjour, j'ai le même problème, j'ai essayé avec .Cells = True mais il met des VRAI dans toutes les cases !
      0