Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 code erreur

Tof072600

XLDnaute Nouveau
Bonsoir,

Il est tard et je bloque sur un code erreur. Je suis novice en vba (j'ai commencé il y a deux jours).
Dans le fichier l'import de fichier est ok
la modification du fichier est ok
La remise du dossier ok
Mais lors de la confection du DA ( notamment mise en forme) j'ai une erreur. je pense simple mais je ne vois pas...
SI vous avez une idée je vous remercie

Très bonne soirée ou nuit
 

Pièces jointes

  • Dossier Annuel v2.xlsm
    138.4 KB · Affichages: 7

Staple1600

XLDnaute Barbatruc
Bonjour @Tof072600 , le fil

Voici la première partie de ma proposition "Weight Watchers"
VB:
Sub miseenforme_B()
Dim Feuilles, vCrits, j%
Dim DernLigne As Long, i As Long, x As Long
Application.ScreenUpdating = False
' Filtres
Feuilles = Array("Capitaux", "Provisions", "Emprunt", "Immos_C", "Immos_F", "Stock", "Frs", "Clts", "Social", "Etat", "Autres", "Trésorerie", "Régul", "Exceptionnel")
vCrits = Array("_capit", "_prov", "_Emp", "_immoc", "_immof", "_Stock", "_Chges", "_Clt", "_Clt", "_Soc", "_Etat", "_Autres", "_Tréso", "_Régul", "_Excep")
For j = LBound(Feuilles) To UBound(Feuilles)
Range("Balance").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets("Fourchette").Range(vCrits(j)), CopyToRange:=Sheets(Feuilles(j)).Range("A8:D8"), Unique:=0
Sheets(Feuilles(j)).Columns("A:D").EntireColumn.AutoFit ' ajustement colonnes
Next
End Sub
(Je vais procéder étape par étape)
Peux-tu déjà me dire si cette première partie fait le job ?

PS: Testes sur une copie de ton classeur.

Question:
Avec ton filtre avancé, tu veux récupérer que la colonne A
(ou de A à D) comme le fait cette proposition ?

Merci d'éclairer ma lanterne
 

Staple1600

XLDnaute Barbatruc
Re

@Tof072600
Voilà ma version simplifiée
VB:
Sub Nettoyage_avant_test()
Dim Feuilles, j%
Feuilles = Array("Capitaux", "Provisions", "Emprunt", "Immos_C", "Immos_F", "Stock", "Frs", "Clts", "Social", "Etat", "Autres", "Trésorerie", "Régul", "Exceptionnel")
For j = LBound(Feuilles) To UBound(Feuilles)
Sheets(Feuilles(j)).UsedRange.Clear
Cells.ClearOutline
Next
End Sub

Sub Mise_en_forme_D()
'Déclarations des variables
Dim Feuilles, vCrits, j%, DernLigne&, dl&, i&, x&
Application.ScreenUpdating = False 'figeage rafraichissement écran
' Tableaux
Feuilles = Array("Capitaux", "Provisions", "Emprunt", "Immos_C", "Immos_F", "Stock", "Frs", "Clts", "Social", "Etat", "Autres", "Trésorerie", "Régul", "Exceptionnel")
vCrits = Array("_capit", "_prov", "_Emp", "_immoc", "_immof", "_Stock", "_Chges", "_Clt", "_Clt", "_Soc", "_Etat", "_Autres", "_Tréso", "_Régul", "_Excep")
'traitements
For j = LBound(Feuilles) To UBound(Feuilles)
Range("Balance").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets("Fourchette").Range(vCrits(j)), CopyToRange:=Sheets(Feuilles(j)).Range("A8:D8")
With Sheets(Feuilles(j))
    .Columns("A:D").EntireColumn.AutoFit: .Columns(2).Insert Shift:=xlToRight: .Range("B8") = "a"
    DernLigne = .Cells(.Cells.Rows.Count, "A").End(xlUp).Row
    .Range("B9:B" & DernLigne).Formula = "=LEFT(A9,2)"
    On Error Resume Next ' Si erreur, reprendre à l'instruction suivante
        If .Range("A9") <> 0 Then
        .Range("B8").Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(4, 5), Replace:=-1, PageBreaks:=0, SummaryBelowData:=-1
        End If
    dl = .Cells(Rows.Count, 2).End(3).Row
    .Range("F8:G8") = Array("Variation", "%"): .Range("F9:F" & dl).Formula = "=+D9-E9"
    .Range("G9:G" & dl).Formula = "=IF(OR(E9=0,D9=0,D9="""",E9=""""),"""",D9/E9-1)"
    .Range("G9:G" & dl).Style = "Percent": .Range("D9:F" & dl).NumberFormat = "#,##0.00": .Outline.ShowLevels RowLevels:=2
    Set r = .[A8].CurrentRegion: r.SpecialCells(12).Interior.ColorIndex = 15: .Cells.ClearOutline
    r.Font.Name = "TrebuchetMs": r.Font.Size = 8: r.Borders.Value = 1: Set r = Nothing: .[A8:G8].Font.ColorIndex = 22
End With
Next
End Sub
La macro Nettoyage_avant_test est à lancer avant de de tester la macro Mise_en_forme_D
(Toujours à tester sur une copie)

NB: test OK sur ton fichier exemple (avec Excel 365)
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…