Incompatibilité macro et formule

Bonjour à tout le monde.

J'ai un problème dans mon fichier mais impossible de savoir où.

J'ai des fichiers hebdomadaires (EM 141 - S 01 jusqu'à S 52) et un fichier central (dossiers annuels - EM 141). Sur ce dernier la macro Récap va chercher toutes les lignes non vides des fichiers hebdomadaires et les copie sur la feuille 2012 puis les dispatche sur des feuilles mois en fonction de la date en G. Si la date en G est de janvier alors la ligne est recopiée sur la feuille JANVIER et ainsi de suite. Tout ça fonctionne grâce à de l'aide apportée ici.

Sur chaque feuille de mois, à partir de la colonne AA je calcule quelques statistiques sur les données de la feuille. Ces données peuvent évoluer et tout se met à jour en fonction de la dernière modification chaque fois que je relance la macro.

Par contre, dès qu'il y a des modifications et que je relance la macro tous les calculs de statistiques plantent. En fait dès la 1° activation de la macro les valeurs des formules changent et en particulier les plages des formules. J'ai beau les bloquer avec $ elles se modifient par rapport à la dernière ligne non vide. Du coup si une ligne s'ajoute ou s'enlève à la réactivation de la macro les formules deviennent fausses.

Je ne comprends pas d'où vient le problème et j'aurais besoin de votre aide. Merci par avance.

5em-141-s-01.zip (65.67 Ko)
6em-141-s-02.zip (64.49 Ko)

Bonsoir,

Je vois déjà 3 sources d'erreur

1) le Private Sub TRANSFERT_Click() est à supprimer et remplacer par Sub TRANSFERT dans un module (double emploi)

2) Dans le ThisWorkbook (Save), on supprime des lignes, parie à supprimer

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim lig As Long
Dim i&
  For i = 2 To 13
  With Sheets(i)
    If .Range("A3") = "" Then Exit Sub
     Application.EnableEvents = False
        lig = .Cells(Rows.Count, 1).End(xlUp).Row

'--- partie de code à supprimer ---
'.Range(.Cells(lig + 1, 1), .Cells(lig + 1, 24).End(xlDown)).Delete Shift:=xlUp
'On Error Resume Next
'With .Range("A4:X" & lig).SpecialCells(xlCellTypeBlanks).EntireRow
'   .Delete Shift:=xlUp
'End With
'On Error GoTo 0
'---
        lig = .Range("A" & Rows.Count).End(xlUp).Row
        With .Range("A3:X" & .Range("A" & Rows.Count).End(xlUp).Row).Borders
        .LineStyle = xlLineStyleNone
        .Weight = xlThin
        End With
        .Range("A3:X3").Borders(xlEdgeTop).Weight = xlThick
        .Range("J3:J" & lig & ",N3:N" & lig & ",N3:N" & lig & ",S3:S" & lig & ",V3:V" & lig & ",W3:W" & lig & ",X3:X" & lig).Borders(xlEdgeRight).Weight = xlThick
     Application.EnableEvents = True
  End With
  Next

3) dans le Sub TRANSFERT(), ligne à supprimer aussi (supprime ligne) vers la fin,

     With Sheets(i)
        Lg = .Range("A" & Rows.Count).End(xlUp).Row + 1
        .[barrer]Range("A3:X" & Lg).Delete Shift:=xlUp[/barrer]          'supprime lignes

j'avais fait çà pour éviter de surcharger les MFC,

Je regarde de plus près dans la soirée ce qu'on peut faire.

(peut-être réécrire les 15 formules dans la macro)

Amicalement

Claude

Avec ces corrections, les formules ne sont plus en erreurs mais je ne comprends toujours pas pourquoi les plages se modifient au premier lancement de la macro et pour les lancements suivant elles n'augmentent plus ne prenant plus en compte les ajouts de lignes.

Pour le bouton j'avais simplement envoyé un fichier intermédiaire. L'erreur avait été corrigée par la suite.

Merci pour ton aide dont j'ai encore bien besoin

Bonjour à tous,

J'ai eu du mal avec les MFC, mais j'ai trouvé la solution,

les formules seront toujours de la ligne 3 à 3000.

je finalise et te renvoie le fichier dans la journée.

Si je récapitule

- Le fichier "dossiers annuels ..." est juste consultatif,

la macro "Transfert" récupère les données des fichiers semaines et dispatche par mois,

en aucun cas, on modifie les données dans ce fichier.

c'est bien çà ?

à tout à l'heure

Claude

édit: dans les feuilles mois, les colonnes F:J sont masquées, normal ?

c'est exactement ça. Les données ne peuvent être modifiées que dans les fichiers semaine.

Par contre comme j'ai besoin de ce récapitulatif régulièrement et je lance donc la macro alors que l'année n'est pas fini. A ce jour seuls les mois de janvier et février seront remplis. Et encore par intégralement ce qui fait que les formules ne doivent pas bouger pour avoir des réusltats corrects.

J'espère avoir été clair.

Merci en tout cas pour toute l'aide

re,

Tu as vu mon édit ?

Attention, le dispatching des mois ne tient pas compte de l'année (seulement le mois)

c'est bon ?

ici, le ThisWorkbook ne sert à rien, je l'ai supprimer,

ne reste plus que la macro "Transfert" dans module1

quand on charge ton fichier d'origine, la 1ère fois il y a un Sub "Recap", c'est quoi çà ?

si on charge une 2ème fois, ce module a disparu, quelque chose m'échappe !

Vois ce fichier modifié et dis-moi

Claude

je te remercie ça a l'air de fonctionner impec... Je teste les différentes possibilités ce soir et je signale tout éventuel problème mais à première vue c'est super. Je regarderai un peu mieux la macro aussi.

Merci beaucoup.

j'ai vérifié, tout testé et cela fonctionne exactement comme je voulais.

Merci beaucoup pour ton aide.

Rechercher des sujets similaires à "incompatibilite macro formule"