Simplifier et alléger un fichier compliqué

Bonjour,

Après de nombreuses recherches (internet, forums...), je ne trouve pas réponse à mes questions.

Je n'ai peut être pas été pertinent sur les termes utilisés !

J'espère avoir l'aide de spécialistes du site.

Je vous explique mon objectif :

Je gère un fichier qui permet d'établir le tarif de ma société, le calcul des commissions des VRP...

C'est un tableau énorme (environ 3000 lignes et 100 colonnes).

Sur pratiquement chacune des cellules, j'ai des formules compliquées avec des SI imbriquées.

En fait, je recopie la formule de base en tête de colonne vers les cellules du bas.

Pour réduire la taille du fichier et simplifier les mises à jour des formules, je souhaiterai avoir la formule de base de chaque colonne sur la première ligne et afficher le résultat appliquant cette formule sur les lignes du bas sans avoir à recopier les formules vers le bas.

Une solution avec une macro pourrait être envisageable ?

Merci de votre aide

Bonjour et bienvenue

Merci de joindre un extrait de ton fichier (20 lignes - 10 colonnes)

Amicalement

Nad

Malheureusement je ne peux pas, ce sont des données très confidentielles.

Re

Tu mets des infos bidons à la place des données confidentielles - C'est juste pour voir la structure de ton fichier.

Nad

J'ai mis un fichier bidon.

L'idée c'est d'écrire que 1 fois la formule en A3 et de l'utiliser sans la recopier dans les cellules en dessous.

En gros, avoir une formule de référence !

Aujourd'hui, je les recopie vers le bas et ça fonctionne très bien sauf que la quantité de données gérées dans chacune des cellules devient trop importante.

112classeur1.xls (18.50 Ko)

Bonjour à tous, Salut Nad,

Tu parlais de 100 colonnes,

Il faut savoir sur quelle ligne se trouve les en-têtes et

sur quelles colonnes se trouvent les formules

La macro ne pourra sans doute pas faire tout d'un coup, il faudra décomposer

d'où la nécessité de joindre les 1ères lignes (anonymisées si besoin)

On à compris le problème !

combien pèse ton fichier ?

Amicalement

Claude

Re

Un essai avec 3 colonnes de formules situées en ligne 1 (C1, E1, F1)

Amicalement

Nad

re Nad,

Attention:

Range("C1", "E1:F1").AutoFill Destination:=Range("C1:C" & Lg, "E1:F" & Lg)

cette ligne incrémente aussi la colonne "D"

il faut faire par paquets de colonnes adjacentes !

Amicalement

Claude

C'est un début de réponse intéressant.

J'ai rebricolé mon fichier pour que vous puisiez le voir (attention ! maux de tête assuré).

Merci

-- 13 Jan 2011, 11:49 --

Désolé le fichier n'était pas joint

-- 13 Jan 2011, 11:52 --

62essai.zip (19.71 Ko)

re,

et le reste des colonnes, pas de formules ?

Je demande çà pour éviter comme souvent de reprendre les macros 36 fois !

Claude

Merci beaucoup pour votre aide.

Là j'ai a peu près toutes mes formules, j'ai surtout supprimer des colonnes de données qui n'entrent pas dans les calculs.

La macro, je pourrai la retravailler avec mon informaticien. J'ai surtout besoin de comprendre la logique.

Le fichier que vous avez mis me parait déjà très bien (c'est exactement dans l'esprit que je recherche).

Dans l'idéal, quand je change une donnée, la cellule "calcul" se met à jour sans appuyer sur le bouton.

re,

en modifiant une cellule dans le tableau, recalcule la ligne

Private Sub Worksheet_Change(ByVal Target As Range)
'Macros par Claude Dubois pour "silwa" Excel-Pratique le 13/01/2011
Dim Lg&
    If Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False
    Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
    Lg = Target.Row

    Range("c2:g2").Copy Destination:=Range("c" & Lg)
    Range("n2:r2").Copy Destination:=Range("n" & Lg)
    Range("t2:x2").Copy Destination:=Range("t" & Lg)
    Calculate
    Rows(Lg) = Rows(Lg).Value
Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
End Sub

Amicalement

Claude

édit: si tu veux au départ mettre tout en Dur

Sub Rafraichi()
'Macros par Claude Dubois pour "silwa" Excel-Pratique le 13/01/2011
Dim Lg&
    Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
    Lg = Cells.Find("*", , , , xlByRows, xlPrevious).Row

    Range("c2:g2").AutoFill Destination:=Range("c2:g" & Lg)
    Range("n2:r2").AutoFill Destination:=Range("n2:r" & Lg)
    Range("t2:x2").AutoFill Destination:=Range("t2:x" & Lg)
    Calculate
    Range("c3:g" & Lg) = Range("c3:g" & Lg).Value
    Range("n3:r" & Lg) = Range("n3:r" & Lg).Value
    Range("t3:x" & Lg) = Range("t3:x" & Lg).Value
Application.Calculation = xlCalculationAutomatic
End Sub

je suis impressionné par tant de rapidité.

Je vais essayer de le réintégrer dans mon tableau au milieu des autres macro.

Je reviendrai vers vous d'ici une quinzaine.

Bravo et merci.

Rechercher des sujets similaires à "simplifier alleger fichier complique"