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
Bonsoir @Tof072600

[Pour infos]
On ne joint jamais le fichier original
Mais un classeur exemple simplifié illustrant la problématique.

Dans ton classeur, on a N feuilles et N modules
(Difficile de rapidement s'y retrouver)

L'erreur se produit sur quelle feuille, dans quel module et dans quelle procédure ?
 

Tof072600

XLDnaute Nouveau
Bonsoir,

Merci pour ton retour, Je pensais que cela serait plus simple avec le fichier car dans la macro qui bug il y a la référence de toutes les feuilles. Désolé
Dans l'onglet Fourchette, C'est pour l'étape 3 Création du DA , la macro afférente est dans le Module2,
quand je fais le débogage , il me surligne :
Li68 , Col 5 :
Sheets(Array("Capitaux", "Provisions", "Emprunt", "Immos_C", "Immo_F", _
"Stock", "Frs", "Clts", "Social", "Etat", "Autres", "Trésorerie", "Régul", "Exceptionnel")).Select
C'est pour la mise en page des feuilles


Merci
 

Staple1600

XLDnaute Barbatruc
Re

Quelle est le nom de la macro ?
C'est la macro miseenforme?

Dans un premier temps, il faudrait l'élaguer en supprimant tous les Select et Activate

NB: Quand je parle de ne pas joindre le fichier original c'est d'abord en rapport avec le point RGPD de la charte du forum.
Et avoir un fichier exemple spécialement créé pour la question permet d'aller à l'essentiel.
Tu le sauras pour tes prochaines questions ;)

Je fais un peu de ménage dans ton code pour te montrer comment continuer à la faire sur le même principe.
 

Staple1600

XLDnaute Barbatruc
Re

Donc
On peut écrire comme ceci pour un effet identique
VB:
Sub miseenforme()
Dim DernLigne As Long, i As Long, x As Long
Application.ScreenUpdating = False
' Filtres
Sheets("Capitaux").Range("Balance").AdvancedFilter Action:=2, CriteriaRange:=Range("_capit"), CopyToRange:=Range("A8"), Unique:=0
Sheets("Provisions").Range("Balance").AdvancedFilter Action:=2, CriteriaRange:=Range("_prov"), CopyToRange:=Range("A8"), Unique:=0
Sheets("Emprunt").Range("Balance").AdvancedFilter Action:=2, CriteriaRange:=Range("_Emp"), CopyToRange:=Range("A8"), Unique:=0
Je te laisse continuer sur le même principe pour toutes les lignes de la partie Filtres
 

Staple1600

XLDnaute Barbatruc
Re

J'ai trouvé la source de ton problème
Enrichi (BBcode):
Sheets(Array("Capitaux", "Provisions", "Emprunt", "Immos_C", "Immos_F", "Stock", "Frs", "Clts", "Social", "Etat", "Autres", "Trésorerie", "Régul", "Exceptionnel")).Select
Une coquille dans le nom d'une feuille
(voir dans la ligne de code, la grosse lettre rouge ;))

Question:
Pourquoi tu sélectionnes toutes ces feuilles?
 

Staple1600

XLDnaute Barbatruc
Re

@TooFatBoy
J'ai bien compris le pourquoi de la chose, mais j'attendais que le répondeur me réponde
(puisqu'il débute en VBA) pour lui proposer la suite
VB:
Dim F, k%
F = Array("Capitaux", "Provisions", "Emprunt", "Immos_C", "Immos_F", "Stock", "Frs", "Clts", "Social", "Etat", "Autres", "Trésorerie", "Régul", "Exceptionnel")
For k = LBound(F) To UBound(F)
Sheets(F(k)).Columns("A:D").EntireColumn.AutoFit
Next
 

Tof072600

XLDnaute Nouveau
Voilà , fait mais toujours l'erreur 1004 Erreur définie par l'application ou par objet


VB:
Sub miseenforme()
'
' feuille travail

Dim DernLigne As Long, i As Long, x As Long
Application.ScreenUpdating = False


' Filtres

    Sheets("Capitaux").Range("Balance").AdvancedFilter Action:=2, CriteriaRange:=Range("_capit"), CopyToRange:=Range("A8"), Unique:=0 ( Mis en jaune lors du débogage)
    Sheets("Provisions").Range("Balance").AdvancedFilter Action:=2, CriteriaRange:=Range("_prov"), CopyToRange:=Range("A8"), Unique:=0
    Sheets("Immos_C").Range("Balance").AdvancedFilter Action:=2, CriteriaRange:=Range("_Immos_C"), CopyToRange:=Range("A8"), Unique:=0
    Sheets("Immod_F").Range("Balance").AdvancedFilter Action:=2, CriteriaRange:=Range("_Immos_F"), CopyToRange:=Range("A8"), Unique:=0
    Sheets("Stock").Range("Balance").AdvancedFilter Action:=2, CriteriaRange:=Range("_Stock"), CopyToRange:=Range("A8"), Unique:=0
    Sheets("Frs").Range("Balance").AdvancedFilter Action:=2, CriteriaRange:=Range("_Frs"), CopyToRange:=Range("A8"), Unique:=0
    Sheets("Clts").Range("Balance").AdvancedFilter Action:=2, CriteriaRange:=Range("_Clts"), CopyToRange:=Range("A8"), Unique:=0
    Sheets("Social").Range("Balance").AdvancedFilter Action:=2, CriteriaRange:=Range("_Social"), CopyToRange:=Range("A8"), Unique:=0
    Sheets("Etat").Range("Balance").AdvancedFilter Action:=2, CriteriaRange:=Range("_Etat"), CopyToRange:=Range("A8"), Unique:=0
    Sheets("Autres").Range("Balance").AdvancedFilter Action:=2, CriteriaRange:=Range("_Autres"), CopyToRange:=Range("A8"), Unique:=0
    Sheets("Trésorerie").Range("Balance").AdvancedFilter Action:=2, CriteriaRange:=Range("_Tréso"), CopyToRange:=Range("A8"), Unique:=0
    Sheets("Régul").Range("Balance").AdvancedFilter Action:=2, CriteriaRange:=Range("_Régul"), CopyToRange:=Range("A8"), Unique:=0
    Sheets("Exceptionnel").Range("Balance").AdvancedFilter Action:=2, CriteriaRange:=Range("_Excep"), CopyToRange:=Range("A8"), Unique:=0
                
    Sheets(Array("Capitaux", "Provisions", "Emprunt", "Immos_C", "Immo_F", _
    "Stock", "Frs", "Clts", "Social", "Etat", "Autres", "Trésorerie", "Régul", "Exceptionnel")).Select
    
        
    Sheets("Exceptionnel").Activate
    Columns("A:D").Select
    Columns("A:D").EntireColumn.AutoFit
    Range("B1").Select
    Sheets("Fourchette").Select
    
' Mise en forme

For i = 5 To 18
    Worksheets(i).Select
        DernLigne = Cells(Cells.Rows.Count, "B").End(xlUp).Row
        
    Range("B8:B2000").Select
    
    Selection.Insert Shift:=xlToRight
    
    Range("B8").Select
    ActiveCell.FormulaR1C1 = "a"
    Range("B9").Select
    ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],2)"
    Range("B9").Select
    
On Error Resume Next ' Si erreur, reprendre à l'instruction suivante

    Selection.AutoFill Destination:=Range("B9:B" & DernLigne), Type:=xlFillDefault
    Range("B9:B2000").Select
    ActiveWindow.ScrollRow = 1
    
'    Range("B9").Select

    Range("A9").Select
If ActiveCell <> 0 Then
    Range("B8").Select
    Selection.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(4, 5), _
        Replace:=True, PageBreaks:=False, SummaryBelowData:=True
End If

    DernLigne = Cells(Cells.Rows.Count, "B").End(xlUp).Row
    Columns("A:A").ColumnWidth = 7.89
    Columns("C:C").ColumnWidth = 32
    Columns("D:D").ColumnWidth = 14
    Columns("E:E").ColumnWidth = 14
    
    Range("D8").Select
    ActiveCell.FormulaR1C1 = "=Sommaire!R[-3]C[-2]"
    Range("E8").Select
    ActiveCell.FormulaR1C1 = "=Sommaire!R[-2]C[-3]"
    Range("F8").Select
    ActiveCell.FormulaR1C1 = "Variation"
    Range("G8").Select
    ActiveCell.FormulaR1C1 = "%"
    
    Columns("F:F").ColumnWidth = 14
    Columns("G:G").ColumnWidth = 6
    Range("C8:G8").Select
    Selection.Font.Bold = True
    
    With Selection.Font
        .Name = "TrebuchetMs"
        .Size = 8
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = 22
        .TintAndShade = 0
        .ThemeFont = xlThemeFontNone
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Range("A8:G8").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.149998474074526
        .PatternTintAndShade = 0
    End With
    Range("F9").Select
    ActiveCell.FormulaR1C1 = "=+RC[-2]-RC[-1]"
    Range("F9").Select
    
    With Selection.Font
        .Name = "TrebuchetMS"
        .Size = 8
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .ThemeFont = xlThemeFontNone
    End With
    Range("F9").Select
    Selection.AutoFill Destination:=Range("F9:F" & DernLigne), Type:=xlFillDefault
    Range("G9").Select
    ActiveCell.FormulaR1C1 = "=IF(OR(RC[-2]=0,RC[-3]=0,RC[-3]="""",RC[-2]=""""),"""",RC[-3]/RC[-2]-1)"
    Selection.Style = "Percent"
    With Selection.Font
        .Name = "TrebuchetMS"
        .Size = 8
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .ThemeFont = xlThemeFontNone
    End With
    Range("G9").Select
    Selection.AutoFill Destination:=Range("G9:G" & DernLigne), Type:=xlFillDefault
    Range("C9:F9").Select
    Range("D:F").Select
    Selection.NumberFormat = "#,##0.00"
    
' couleur les lignes totaux

    Range("A8").Select
    ActiveSheet.Outline.ShowLevels RowLevels:=2
    Range(Selection, Selection.End(xlToRight)).Select
    DernLigne = Cells(Cells.Rows.Count, "B").End(xlUp).Row
    Range(Selection, "G9:G" & DernLigne).Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Application.CutCopyMode = False
    
    With Selection.Interior
        .PatternColorIndex = 8
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.249977111117893
        .PatternTintAndShade = 0
    End With
    ActiveSheet.Outline.ShowLevels RowLevels:=3
    Range("A7").Select
    
' suppression plan, colonne 2 et dernière ligne
    Selection.ClearOutline
    Rows(DernLigne).Select
    Selection.Delete Shift:=xlUp
    Columns("B:B").Select
    Selection.Delete Shift:=xlToLeft
    
' copie des entetes
    Sheets("entetes").Select
    Range("A2:F6").Select
    Selection.Copy
    Worksheets(i).Select
    Range("A2").Select
    ActiveSheet.Paste
x = 7 + i - 5
    Sheets("entetes").Select
    Range("B" & x).Select
    Selection.Copy
    Worksheets(i).Select
    Range("A2").Select
    ActiveSheet.Paste
    
' Définition zone d'impression
ActiveSheet.PageSetup.PrintArea = "$A$1:$F$" & DernLigne
Next i

Application.ScreenUpdating = True
End Sub
 

Tof072600

XLDnaute Nouveau
Re

@TooFatBoy
J'ai bien compris le pourquoi de la chose, mais j'attendais que le répondeur me réponde
(puisqu'il débute en VBA) pour lui proposer la suite
VB:
Dim F, k%
F = Array("Capitaux", "Provisions", "Emprunt", "Immos_C", "Immos_F", "Stock", "Frs", "Clts", "Social", "Etat", "Autres", "Trésorerie", "Régul", "Exceptionnel")
For k = LBound(F) To UBound(F)
Sheets(F(k)).Columns("A:D").EntireColumn.AutoFit
Next
Désolé je postais durant les répondes
Merci punaise c'est rien :) merci.
Bah en fait je veux créer des feuilles de travail par classe ( catégories) et en fonction de la balance que cela me génère des feuilles . Quand on fait une révision de dossier c'est par groupement de comptes. d'ou les feuilles en pagaille
 

Staple1600

XLDnaute Barbatruc
Re

Tu peux continuer la simplification de ton (toujours sur le même principe (pas de Select)
Range("D8").Select
ActiveCell.FormulaR1C1 = "=Sommaire!R[-3]C[-2]"
peut devenir
Range("D8").FormulaR1C1 = "=Sommaire!R[-3]C[-2]"
etc...

Sur ce, il est temps d'éteindre le PC.

Bonne nuit.
 

Statistiques des forums

Discussions
312 113
Messages
2 085 427
Membres
102 889
dernier inscrit
monsef JABBOUR