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
laure - 2 nov. 2011 à 15:53
A voir également:
- Merge cells vba
- Merge pdf - Télécharger - PDF
- Araxis merge - Télécharger - Gestion de fichiers
- Pdf split and merge - Télécharger - PDF
- Incompatibilité de type vba ✓ - Forum Programmation
- Vba attendre 1 seconde ✓ - Forum VB / VBA
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
6 nov. 2006 à 14:34
Salut,
depuis la feuille a
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
Ton code est équivalent à
lami20j
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)).Mergequi biensûr ne fonctionne pas ;-))
lami20j
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
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
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
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)
Worksheets(Feuillet).Range(Cells(Ligne1, Colonne1), Cells(LigneN, ColonneN)).MergeCells = True
ça ne marche pas! (erreur définie par l'application ou l'objet)
6 nov. 2006 à 17:11