Taille ultra volumineuse d'un fichier

Bonjour,

j'ai problème avec la taille d'un fichier et j'aurais besoin d'aide pour avoir des explications et des solutions.

Dans un 1° fichier (fichier hebdo), j'ai des données que je veux envoyer vers un 2° fichier (relances cumulées) en fonction d'une valeur dans une cellule, en l'occurrence, "NV" en colonne L, à partir de L3.

Toutes les lignes en "NV" sur la colonne L sont copiées de A à K plus la colonne W sur le 2° fichier, toujours de A à K et V pour la dernière.

Les valeurs dans la les cellules de O à R sont reportés en remplissant par "X" les cellules correspondantes dans les colonnes de L à U dans le fichier 2.

Je souhaite garder la même mise en forme dans le fichier 2 (épaisseur des traits notamment). Le problème de taille de fichier vient-il de là?

Dans le fichier 2, il y a 2 macros à l'ouverture du fichier : classement chronologique par rapport à la colonne G et mise en couleur des lignes dont la date de traitement (colonne K) est inférieur d'un ou deux mois par rapport à la date du jour.

Voilà pour l'explication de mes 2 fichiers ci-joints.

Le problème est qu'à chaque lancement de la macro "Relances", le fichier "relances cumulées" augmente de taille de manière très importante. En quelques tests uniquement et pour 3 lignes copiées j'arrive à plusieurs Mo.

C'est un fichier qui sera utilisé plusieurs fois par semaine après des 10aines, voire 100aines de lignes ce qui va poser un très gros problème.

Quelqu'un aurait-il une solution?

Merci pour votre aide (et un grand merci à Yvouille pour la conception de la macro du fichier hebdo)

20fichier-hebdo.zip (70.53 Ko)

Bonjour,

Supprime la ligne :

Range(Cells(3, 1), Cells(50000, 22)).Borders.LineStyle = xlNone

Mettre un quadrillage à des cellules est particulièrement inutile. Le quadrillage d'Excel n'est-il pas suffisant ?

la mise en couleur des lignes selon un critère de date est maladroite : il est préférable de créer une colonne avec un champ logique :

1 pour les plus d'un mois,

2 pour les plus de 2 mois...

En outre cette manière de faire offrirait l'avantage de filtrer et comparer plus facilement.

A+

Merci pour la résolution du problème et pour les conseils.

concernant les couleurs, c'est surtout pour mettre en évidence le travail qui n'a pas été fait.

Ces relances sont envoyées à des personnes n'ayant pas fait leur travail. C'est fait régulièrement tous les mois et malgré cela il en reste encore les mois suivants. Il fallait mettre en évidence ce qui n'était pas fait et j'avais pensé à cette solution.

C'est vrai qu'il n'y a pas de filtre automatique mais je ne pense pas en avoir besoin sur cette colonne.

Revoir mes dernières remarques.

oui merci, j'en fait un edit car j'ai répondu trop vite

Il est possible que tu sois obligé de créer un nouveau cumulé :

Je suis arrivé une seule fois à le ramener à 47 Ko mais depuis il se bloque obstinément à 3.8 Mo donc on peut penser qu'il se pollue très rapidement avec les scories d'effacement.

Mon conseil est de supprimer également les MFC en rouge sur les X . A priori elle ne sont pas indispensable ?

Il faut travailer d'abord sur le moteur avant de voir pour la déco.

Si vraiment une MFC est indispensable on verra après comment la limiter à la zone utile et non pas à toute la feuille.

A+

Nom_de_ce_fichier = ThisWorkbook.Name
Chemin = ThisWorkbook.Path
Workbooks.Open Filename:=Chemin & "\Relances Cumulées.xls"
Range(Cells(3, 1), Cells(50000, 22)).Borders.LineStyle = xlNone

J'ai déjà modifié ce point en le passant à 1000 lignes et ça diminue le poids du fichier.

Dans le fichier 2, on peut enlever la MFC et mettre une macro qui me colore les "x" en rouge. Ce sera moins lourd qu'une MFC sur toute la feuille? Cette coloration m'est imposée dans la conception du fichier...

En fait je pense que ce n'est pas tant la coloration que la technique utilisé pour la copie qui pose problème.

Si tu n'avais pas de quadrillage tu ne serais pas obligé de passer par un SpecialPaste et ça ne poserai pas de problème.

Concernant la MFC sur ces colonnes elle ne poserait pas de problème si ton fichier vide (c'est à dire avec juste les en-tête de lignes) pèse moins de 50 Ko

Si tu n'arrives pas à un fichier clean (- de 50 Ko) il est préférable de partir sur un fichier vierge, faire un Copier/Coller des ent-têtes,

puis un Copier/Coller (Spécial Valeurs) des données.

Ensuite il est possible de peaufiner un peu la macro pour éviter le SPécialPaste. Normalement un fichier de quelques centaines voire milliers de lignes ne doit pas dépasser 1 Mo d'autant que tu n'as aucune formules. J'en ai un analogue de 3000 lignes : il ne fait pas un Mo !

A+

là, ça dépasse mes compétences...

un fichier vierge (avec seulement les 2 premières lignes pour la mise en page) en pièce jointe fait 16 Ko

Ou mais tu auras quand même une petite MFC en plus.

.On va rajouter une colonne pour remplacer la coloration en orange et en rouge ou tu préfères 2 colonnes ?

Je vais gratter pour te pondre un macro sans Copier/Coller;

Waiting !

A+


Bonjour,

Déjà je te donne la macro pour remplacer ton Workbook_Open dans "Relances Cumulées"

Au lieu de colorer en rouge et orange elle met un 2 pour plus de 60 jours et un 1 pour plus de 30 dans la colonne W.

Rien ne t'empêche de mettre une MFC sur cette colonne également...

Private Sub Workbook_Open()
Dim DerLig%, plage As Range, c As Range

Application.ScreenUpdating = False
DerLig = Range("C" & Rows.Count).End(xlUp).Row
'classement par ordre chronologique en fonction de la date en G
Rows("2:" & DerLig).Sort Key1:=Range("G3"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
    Range("A" & DerLig + 1).Activate

Set plage = Sheets("Relances cumulées").Range("K3:K" & [K65535].End(xlUp).Row)
For Each c In plage
  If c.Value < Date - 30 Then c.Offset(0, 12) = 1 'pour une date inférieure de 30 jours à aujourd'hui
  If c.Value < Date - 60 Then c.Offset(0, 12) = 2
Next c

ActiveWorkbook.Save
End Sub

Et d'autre part la macro Relances corrigée pour ne transférer que les données.

Sub Relances()
Dim WbS As Workbook, WbC As Workbook, WsS As Worksheet, WsC As Worksheet
Dim iLRS%, iLRC%, i%, Ref_VaR As Long, k%, kk%, Chemin$, oRange()

Application.ScreenUpdating = False

Set WbS = ThisWorkbook
Set WsS = WbS.Worksheets(1)
iLRS = WsS.Range("C" & WsS.Rows.Count).End(xlUp).Row
Chemin = ThisWorkbook.Path
Workbooks.Open Filename:=Chemin & "\Relances Cumulées.xls"
Set WbC = ActiveWorkbook
Set WsC = WbC.Worksheets(1)
iLRC = WsC.Range("C" & WsC.Rows.Count).End(xlUp).Row

'Range(Cells(3, 1), Cells(50000, 22)).Borders.LineStyle = xlNone
'Windows(Nom_de_ce_fichier).Activate
With WsS

' copie des relances de ce fichier semaine au fichier relances cumulées
For i = 3 To iLRS
iLRC = iLRC + 1
    If .Cells(i, 12) = "NV" Then
    oRange = .Range("A" & i & ":K" & i)
    WsC.Range("A" & iLRC & ":K" & iLRC) = oRange
    WsC.Range("V" & iLRC) = .Range("W" & i)

' transformation des codes du fichier semaine en cases cochées sur le fichier relances cumulées
        Select Case .Cells(i, 15) 'Colonne "0"
            Case Is = "02A": WsC.Range("L" & iLRC) = "X"
            Case Is = "02B": WsC.Range("M" & iLRC) = "X"
            Case Is = "02C": WsC.Range("N" & iLRC) = "X"
            Case Is = "02D": WsC.Range("O" & iLRC) = "X"
            Case Is = "02E": WsC.Range("L" & iLRC) = "X"
                             WsC.Range("N" & iLRC) = "X"
            Case Is = "02F": WsC.Range("L" & iLRC) = "X"
                             WsC.Range("O" & iLRC) = "X"
            Case Is = "02G": WsC.Range("N" & iLRC) = "X"
                             WsC.Range("O" & iLRC) = "X"
            Case Is = "02H": WsC.Range("L" & iLRC) = "X"
                             WsC.Range("N" & iLRC) = "X"
                             WsC.Range("O" & iLRC) = "X"
        End Select

        Select Case .Cells(i, 16) 'Colonne "P"
            Case Is = "03A": WsC.Range("P" & iLRC) = "X"
            Case Is = "03C": WsC.Range("Q" & iLRC) = "X"
            Case Is = "03E": WsC.Range("P" & iLRC) = "X"
                             WsC.Range("Q" & iLRC) = "X"
        End Select

        Select Case .Cells(i, 17) 'Colonne "Q"
            Case Is = "04A": WsC.Range("R" & iLRC) = "X"
            Case Is = "04C": WsC.Range("S" & iLRC) = "X"
            Case Is = "04E": WsC.Range("R" & iLRC) = "X"
                             WsC.Range("S" & iLRC) = "X"
        End Select

        Colonne_R = Cells(i, 18)
        Select Case Cells(i, 18) 'Colonne "R"
            Case Is = "05A": WsC.Range("T" & iLRC) = "X"
            Case Is = "05B": WsC.Range("U" & iLRC) = "X"
        End Select
    End If
iLRC = iLRC + 1
Next
End With

'tri fichier relances cumulées
With WsC
.Rows("2:" & iLRC - 1).Sort Key1:=.Range("C3"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal

'suppression des doublons du fichier relances cumulées (dossiers toujours en NV)
For i = iLRC To 4 Step -1
If .Cells(i, 3) = .Cells(i - 1) Then .Rows(i).Delete
Next

iLRC = .Range("C" & .Rows.Count).End(xlUp).Row
'suppression dans le fichier relances cumulées des lignes non marquées "NV" dans le fichier semaine
'pour enlever les dossiers qui ne sont plus en relances
For k = 3 To iLRS
    If WsS.Cells(k, 12) <> "NV" Then
    Ref_VaR = WsS.Cells(k, 3)
      For kk = 2 To iLRC
          If .Cells(kk, 3) = Ref_VaR Then .Rows(kk).Delete
          Exit For
      Next
    End If
Next
End With
WbC.Close SaveChanges:=True
End Sub

Bon... Tu vérifies bien parce que j'ai codé un peu à la sauvette j'ai pas trop de données pour tester à donf. ! Mais on doit pas être loin du compte...

Si c'est bon YORAPUKA améliorer un peu la MFC si on se rend compte qu'elle est trop gourmande, mais déjà là, ça va lui faire une drôle de cure d'amaigrissement à ton fichier cumulé...

Tu me dis et on avisera...

Bonne soirée

A+

Je te remercie.

Pour ce qui est du problème de taille, il est réglé c'est clair.

Au niveau de la macro, je n'y comprends pas tout et même loin de là... Il y a tout de même un problème sur la gestion des doublons qui ne se fait plus.

Par contre, en visuel, je sais que cela ne collera pas avec ce qui m'est demandé et il me faudra le quadrillage et les couleurs.

Si le problème de taille est uniquement dû au quadrillage, je crains que ce soit fichu...

Pour la gestion des doublons je dois pouvoir corriger ça.. Mais si j'avais un peu plus de données dans le fichier hebdo et quelques données dans le fichier cumulé pour générer des doublons et vérifier mon travail ça me permettrai de ne pas travailler en aveugle.

Pour le quadrillage je ne sais pas faire avec. Les gens voudrait utiliser un ordinateur et continuer de travailler avec leur taille-crayon !

Il te faudra leur expliquer que l'important ce n'est pas le quadrillage ou les cellules qui clignotent mais la fiabilité du résultat :

80 % des gens qui utilisent Excel commence par coller des couleurs, des boutons , des images et après ils se demandent ce qu'ils vont bien pouvoir faire avec... L'idéal c'est quand même d'adopter la démarche inverse...

En revanche pour la mise en forme tu dois pouvoir utiliser une MFC sur les colonnes A à K en te basant sur la valeur de la colonne W : si W = 2 alors rouge, Si W = 1 alors orange... A mon avis en MFC tu obtiendras le même résultat, mais avec les inconvénients en moins.

Pour le format conditionnel, tu sélectionnes toutes les colonnes A à K

Tu choisis Utiliser une formule pour déterminer...

et comme formule tu mets :

=$W1 =2 et tu choisis la couleur rouge

Tu fais la même chose avec la couleur orange :

=$W1 =1 et le tour est joué.

Si tu as des difficultés je te le ferais sur la démo dès que j'aurai corrigé le bug sur les doublons si tu me donnes quelques données avec des doublons pour déboguer mon code.

A+

Dernière minute : le code modifie pour la suppression des doublons :

'...
'suppression des doublons du fichier relances cumulées (dossiers toujours en NV)
For i = iLRC To 3 Step -1
If .Cells(i, 3) = .Cells(i + 1) Then .Rows(i).Delete
Next
'le reste sans changement

YAPUKA voir avec tes responsables s'ils campent sur leurs positions pour le quadrillage, car ça c'est la vérole : C'est le genre de détail qui fout tout en l'air.

malheureusement la position n'a pas bougé. J'ai beau expliquer que le fichier sera volumineux, rien n'y fait.

Une des motivations pour ces lignes est que le document est imprimé et affiché. Sans les lignes, sur papier on perd vite en lisibilité.

Je ne sais pas comment mais j'ai pensé à une autre solution (ou plutôt 2) pour détourner le problème.

Est-il possible de ne pas copier la mise en forme depuis la macro Relances comme tu l'as fait mais sur le fichier Relances cumulées, de créer un quadrillage pour les lignes dont la cellule en C est non vide (c'est ma cellule référence)?

Dans la négative, si on garde la copie du quadrillage, peut-on mettre en place une macro sur le fichier Relances cumulées qui supprimerait toutes les lignes vides en C. Je l'ai fait manuellement et la taille du fichier diminue.

Merci pour l'aide et les conseils apportés

Y sont tétus hein ! As tu pensé à l'option imprimer le quadrillage ? Je ne vois vraiment pas ce que des grosses lignes bien noires apportent de plus que le quadrillage léger par défaut d'Excel. j'ai fait l'essai pour comparer :

Personnellement je trouve bien plus lisible qu'avec un quadrillage bien gras ... mébon !

Si l'option quadrillage fin ne suffit vraiment pas on peut créer une macro qui enregistre le fichier avant l'impression (sans quadrillage)

Qui crée le quadrillage pour l'impression et...

qui ferme le fichier aussitot après l'impression (donc sans enregistrer le quadrillage)

Je te ponds ça cet après midi et tu verras bien.

Sinon bien sûr en dernier ressort, on peut toujours essayer toutes les solutions. Apartir de la macro que je te passerai tout à l'heure YAROPUKA enregistrer la mise en forme s'Ils tiennent vraiment à la garder à l'écran.

Je ne crois d'ailleurs pas que ça pose de problème particulier. Une fois qu'on à viré la contraine des Copier/Coller et qu'on a remplacé les formats de ligne par une MFC, je pense que même avec 2003 ça devrait tenir la route d'autant que ton fichier n'est quand même pas extrèmement volumineux.

mettre en place une macro sur le fichier Relances cumulées qui supprimerait toutes les lignes vides en C : ça c'est pas bien sorcier, on peut même le faire directement à partir de la macro Relances.

Tu ne m'as pas dit si ma correction pour les doublons (ci- dessus) fonctionnait correctement et si la MFC convenait ?

A+

oui elle fonctionne merci

Ton enthousiasme me va droit au coeur !

Bon en fait après réflexion, maintenant je suis bloqué pour différentes raisons.

La première est que je n'ai pllus Excel 2003 depuis belle lurette et j'éprouve quelques difficultées à me remémorer certaines limitations de 2003.

Tout ce qui suit concerne le fichier "relances cumulées"

Je découvre qu'il y a déjà des mises en formes conditionnelles en gris : sont-elles indispensables ou est-ce des scories de précédents Copier/Coller ?

De façon générale une ou plusieurs MFC me paraissent préférable à de nombreux formats en couleurs appliqués "en dur" à chaque ouverture.

1 - Le problème, si je me rappelle bien, est que tu ne peux appliquer que 5 MFC sur Excel 2003 Il faut donc que tu me listes celle qui sont indispensables:

2 - Me dire également si l'option avec une colonne de chiffre (qui peut être masquée à l'impression) peut-être appliquée. pour mettre en rouge et en orange les lignes de 1 et 2 mois...

3 - Me préciser si on peut envisager une mise en forme avant impression et une sortie aussitot après pour éviter d'enregistrer les modifications.

4 - Il faudrait également me dire ce que contenait le module vide dans le fichier que tu m'as transmis. C'est clair que s'il contenir d'autres macros qui me sont inconnues mais qui vont inter-agir avec tout ce que j'ai fait, C'est peut-être pas la peine que je me fatigue pour découvrir ensuite que tout ce travail ne sert à rien parce qu'il va y avoir d'autres bricolages qui vont "tout casser". !

5 - En fin si on envisage une macro de mise en forme (avec ou sans sauvegarde après impression), il faut également que tu m'enregistres un bout de macro qui fait cette mise en forme du quadrillage (sur 3 lignes par exemple) parce que ça je ne peut pas l'enregistrer pour toi : Les macros de mise en forme 2010 sont sensiblement différentes et ne passeraient pas sur 2003.

J'utiliserai ensuite cet enregistrement pour fignoler le code..

mettre en place une macro sur le fichier Relances cumulées qui supprimerait toutes les lignes vides en C : ça c'est pas bien sorcier, on peut même le faire directement à partir de la macro Relances.

6 - Tu n'as pas répondu non plus à cette dernière suggestion. Dois l'ajouter ou Non à la macro Relances ? Ou tu le veux spécifiquement dans le classeur "Relances cumulées" (parce que tu as d'autres traitements à faire avant de supprimer ces lignes°

Dans l'attente de réponses précises sur ces 5 points je ne peux rien faire

A+

galopin01 a écrit :

Ton enthousiasme me va droit au coeur !

désolé. Je te remercie de ton aide bien entendu.

J'étais au boulot et j'ai répondu vite car je n'avais plus la possibilité de répondre par la suite.

galopin01 a écrit :

1 - Le problème, si je me rappelle bien, est que tu ne peux appliquer que 5 MFC sur Excel 2003 Il faut donc que tu me listes celle qui sont indispensables:

Sur 2003 il y a seulement 3 MFC possibles.

Je n'en ai besoin d'aucune. Je passe par des macros pour toutes les mises en couleur. Celles qui existent sur les premières lignes sont des erreurs.

galopin01 a écrit :

2 - Me dire également si l'option avec une colonne de chiffre (qui peut être masquée à l'impression) peut-être appliquée. pour mettre en rouge et en orange les lignes de 1 et 2 mois...

Qu'est ce qu'il vaut mieux? la macro que j'ai déjà où la MFC?

galopin01 a écrit :

3 - Me préciser si on peut envisager une mise en forme avant impression et une sortie aussitot après pour éviter d'enregistrer les modifications.

J'ai justement posé la question à mes responsables. Le fichier papier doit être le même que celui informatique : avec bordures selon la mise en forme qui a été décidée.

galopin01 a écrit :

4 - Il faudrait également me dire ce que contenait le module vide dans le fichier que tu m'as transmis. C'est clair que s'il contenir d'autres macros qui me sont inconnues mais qui vont inter-agir avec tout ce que j'ai fait, C'est peut-être pas la peine que je me fatigue pour découvrir ensuite que tout ce travail ne sert à rien parce qu'il va y avoir d'autres bricolages qui vont "tout casser". !

Il n'y a rien d'autre sur les 2 fichiers que ce que j'ai mis en pièce jointe. Ils seront tels quels.

galopin01 a écrit :

5 - En fin si on envisage une macro de mise en forme (avec ou sans sauvegarde après impression), il faut également que tu m'enregistres un bout de macro qui fait cette mise en forme du quadrillage (sur 3 lignes par exemple) parce que ça je ne peut pas l'enregistrer pour toi : Les macros de mise en forme 2010 sont sensiblement différentes et ne passeraient pas sur 2003.

Voici un enregistrement pour une mise en forme sur 3 lignes, tel que cela m'est demandé

Range("A3:V5").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThick
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThick
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThick
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    Range("K3:K5").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThick
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThick
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThick
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    Range("U3:U5").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThick
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThick
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
galopin01 a écrit :

mettre en place une macro sur le fichier Relances cumulées qui supprimerait toutes les lignes vides en C : ça c'est pas bien sorcier, on peut même le faire directement à partir de la macro Relances.

Cette macro pour supprimer automatiquement à la fermeture du fichier toutes les lignes avec la mise en forme lorsque C est vide sera je pense le plus simple car correspondra à ce qui me manque et diminuera la taille du fichier.

galopin01 a écrit :

6 - Tu n'as pas répondu non plus à cette dernière suggestion. Dois l'ajouter ou Non à la macro Relances ? Ou tu le veux spécifiquement dans le classeur "Relances cumulées" (parce que tu as d'autres traitements à faire avant de supprimer ces lignes°

A+

Le plus simple est de l'ajouter au fichier "Relances cumulées"

Je te remercie pour ton aide même si j'aurais espéré que les changements que tu proposes soient appliqués. Je ne sais pas les faire et j'aurais bien aimé voir ce que cela aurait donné et essayé de le comprendre.

Ok j'ai à peu près tout compris.

Pour la suppression des lignes vides en C, je vais te demander de repréciser une bricole car ma demande n'était pas claire .

Je reformule donc la question :

Le plus simple est de l'ajouter au fichier "Relances cumulées"

Non : Le plus simple est de l'ajouter dans la macro Relances.

A moins que tu aies vraiment besoin de voir ces lignes dans "Relances cumulées" avant de les supprimer..

Dans ce cas à quel moment comptes-tu les supprimer et comment comptes-tu lancer la macro de suppression ?

Donc si tu ne ceux pas que cette suppression se fasse dans la macro Relances me préciser à quel moment tu voudras que ça se fasse.

Qu'est ce qu'il vaut mieux? la macro que j'ai déjà où la MFC? Oh... sans aucun doute la MFC : Elle ne pèse rien, ne nécessite aucun codage et ne laisse subsister aucun résidu de modification... De surcroit comme tu n'en utilises aucune dans ce fichier, on ne risque pas d'être géné par les limitations...

Bon je commence à gratter la dessus demain matin. J'attend néanmoins une réponse définitive pour cette macro de suppression..

Bonne nuit !

Pour les explications, ne t'inquiète pas je te donnerai toutes les explications nécessaires dès que l'ensemble sera à peu près au point.

Sur le fichier hebdo, je veux copier sur le fichier Relances cumulées toutes les lignes en NV.

J'ai un fichier hebdo par semaine.

Il est impossible de savoir le nombre de lignes qui seront copiées.

Sur la macro Relances je pars sur 500 (ce sera un minimum). C'est ce qui fait augmenter la taille du fichier Relances Cumulées.

Le quadrillage n'apparait pas sur le fichier Relances Cumulées si les lignes ne sont pas remplies. Par contre le fichier a augmenté de taille et si je sélectionne toutes les lignes vides jusqu'à 500 et fais un CTRL - le fichier reprend un taille normale.

Peu importe pour moi où seront supprimée ces lignes. Quand doivent elles être supprimées? A la fermeture du fichier, juste avant l'enregistrement.

La MFC devra donc être sur les 500 premières lignes. Mais contrairement à une macro, si on dépasse ces 500 lignes, il faudra la modifier d'où ma question de savoir laquelle était préférable.

Bon je crois que je tien le bon bout !

J'ai tout revu et corrigé et je te met les deux fichiers

Fichier Hebdo et

Attention : Pour des raisons techniques ce dernier fichier ne comporte pas d'accent sur le "é" de Cumulées : Il conviendra de remettre cet accent au moment du téléchargement sinon évidemmment ça marchera moins bien....

Le fichier cumulé ne comporte plus de macro : Tout est pris en charge par la macro Relances du fichier Hebdo.

Ce fichier comporte une colonne (W) formatée pour rendre son contenu invisible.

Cette colonne sert de support à 2 MFC qui prennent en charge l'affichage Rouge et Orange selon la date.

Ces MFC sont préférable à tout formatage "en dur" qui laisseraient inévitablement des scories lors des colorations successives.

Les MFC ne pèsent rien et sont prévues pour toutes les cellules des colonnes A à K

Comme tu devras basculer toutes tes données actuelles dans ce nouveau fichier je te recommande de faire un Copier/CollageSpécial Valeur pour les données actuelles afin de ne pas polluer le nouveau classeur avec des scories de l'ancien.

Après ce Collage Spécial tu devras peut-être reformater les quelques lignes que tu as collées avec le format date qui te convient.

Il n'est pas utile de formater toute la colonne car pour les données qui seront importées du fichier hebdo le formatage devrait suivre...

Pour ce qui concerne le Fichier Hebdo le seul changement concerne la macro relances que tu auras juste à recopier in-extenso dans ton fichier original

Cette macro à été considérablement remanié, le code est abondamment commenté.

Je te recommande de mettre les commentaires en vidéo inverse pour faciliter la lecture.

Pour cela, dans VBA tu as un menu Outils/ Options : dans l'onglet Format de l'éditeur règle comme suit :

comvba

Je n'ai mis que les commentaires qui me semblaient les plus utiles, ou ceux qui définissaient une section....

Si ces commentaires ne te suffisent pas et qu'il subsiste quelques points obscurs, YAKA demander je t'expliquerai.

Bien sur lors des essais il va de soit que tu devras conserver des copies de sécurités des fichiers originaux dans un autre endroit, car avec 3 lignes de données je n'ai pas pu tester suffisamment le code. Tu devras donc tester de nombreuses fois que tout se passe comme prévu pour toutes les séquences de la macro Relances.

Bon je crois que j'ai tout dis. Si j'ai oublié quelque chose tu me diras.

Bon a.m. et bon tests...

A+

Rechercher des sujets similaires à "taille ultra volumineuse fichier"