[Résolu] Copie de la mise en forme d'une cellule : Erreur 1004 ?
Bonjour,
Dans le traitement d'un fichier Excel issu d'un logiciel externe, je souhaite appliquer à une cellule la mise en forme d'une cellule d'origine.
Le fichier sur lequel je travaille contient un onglet "Params", qui contient une cellule (nommé STYLE1). Actuellement, je retraite ce fichier, en supprimant les lignes vides. Je voudrais ajouter à cette procédure l'application d'une mise en forme particulière (pour débuter, j'applique toujours la même, mais le but est d'enb appliquer une différete suivant différents cas) :
A l'exécution, j'ai me message "1004 : La méthode select de la classe Range a échoué". Le morceau en gras est récupéré à partir de l'enregistreur de macro, il est donc possible que celui soit "lourd"...
Sauriez vous me dire d'où vient le problème ?
Merci d'avance
NB : Je voudrai vous ùmettre le fichier Excel à dispo, mais c'est relativement difficile, car celui-ci est en chantier, et contient d'autres informations qui peuvent vous "perturber"...
Bonjour,
Dans le traitement d'un fichier Excel issu d'un logiciel externe, je souhaite appliquer à une cellule la mise en forme d'une cellule d'origine.
Le fichier sur lequel je travaille contient un onglet "Params", qui contient une cellule (nommé STYLE1). Actuellement, je retraite ce fichier, en supprimant les lignes vides. Je voudrais ajouter à cette procédure l'application d'une mise en forme particulière (pour débuter, j'applique toujours la même, mais le but est d'enb appliquer une différete suivant différents cas) :
Code:
Sub OuvreModele_Tsynth(ficname As String, marge_bas As Integer, onglet_corps As Integer)
' Paramètres
' ficname => Nom du fichier complet
' marge_bas => marge entre la fin des lignes et le début des totaux (s'indique en nombre de lignes)
' onglet_corps => numéro de l'onglet à retraiter (suppression des lignes vides)
'Déclaration des variables
Dim wbExcel As Excel.Workbook 'Classeur Excel
Dim wsExcel As Excel.Worksheet 'Feuille Excel
Dim fin_lignes, debut_lignes, derli, r As Integer
'Ouverture du fichier dans la même instance
Set wbExcel = Application.Workbooks.Open(ficname)
'wsExcel correspond à la l'onglet à retraiter (corps)
Set wsExcel = wbExcel.Worksheets(onglet_corps)
'On récupère la ligne à laquelle commence le corps du devis
debut_lignes = wsExcel.Range("NIV1").Row
'On récupère la fin du corps du devis
fin_lignes = wsExcel.Range("NIV_TOTAL").Row - marge_bas
' On récupère la dernière ligne du fichier
With wsExcel.UsedRange
derli = .Row + .Rows.Count - 2
End With
Application.ScreenUpdating = False
' On boucle sur les lignes du corps du devis
For r = fin_lignes To debut_lignes Step -1
' Si la colonne A ne contient rien, cela signifie que la la ligne doit être supprimée
If wsExcel.Range("A" & r).Text = "" Then
wsExcel.Rows(r).Delete
Else
' Puis on redimensionne les lignes automatiquement
[B] wSheets("Params").Range("STYLE1").Copy
wsExcel.Range("A" & r).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
wsExcel.Rows(r).EntireRow.AutoFit[/B]
End If
Next r
End Sub
A l'exécution, j'ai me message "1004 : La méthode select de la classe Range a échoué". Le morceau en gras est récupéré à partir de l'enregistreur de macro, il est donc possible que celui soit "lourd"...
Sauriez vous me dire d'où vient le problème ?
Merci d'avance
NB : Je voudrai vous ùmettre le fichier Excel à dispo, mais c'est relativement difficile, car celui-ci est en chantier, et contient d'autres informations qui peuvent vous "perturber"...
Dernière édition: