IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Excel limite les Formules à 8192 caractères ; la mienne en fait 9098 [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut Excel limite les Formules à 8192 caractères ; la mienne en fait 9098
    Bonjour,
    Je réalise un planning d'acitvités avec des stats dans tous les sens.
    Ma commande initiale portait sur un effectif de 27 et tout allait bien.
    Mais on me demande d'augmenter la capacité à 40 avec de nouvelles activités et là ça ne passe plus.
    Exemple, pour calculer l'effectif présent, je calcule :
    • le nb de cellules différentes des 7 motifs d'absence
    • pour 2 lignes (matin et soir) sur 3 lignes (une sert aux observations)
    • pour chaque personne
    • on divise ce premier calcul par 2 pour revenir à la journée
    • on retire le présentéisme des managers calculé dans une autre cellule

    ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    =SI(MOIS(MoisCourant)<>MOIS(C4);0;(
    NB.SI.ENS(C29;"<>"&A11;C29;"<>"&A12;C29;"<>"&A13;C29;"<>"&A14;C29;"<>"&A20;C29;<>&A21;C29;<>&A22;B29;"<>"&"")+
    NB.SI.ENS(C30;"<>"&A11;C30;"<>"&A12;C30;"<>"&A13;C30;"<>"&A14;C30;"<>"&A20;C30;<>&A21;C30;<>&A22;B30;"<>"&"")+
    NB.SI.ENS(C32;"<>"&A11;C32;"<>"&A12;C32;"<>"&A13;C32;"<>"&A14;C32;"<>"&A20;C32;<>&A21;C32;<>&A22;B32;"<>"&"")+
    NB.SI.ENS(C33;"<>"&A11;C33;"<>"&A12;C33;"<>"&A13;C33;"<>"&A14;C33;"<>"&A20;C33;<>&A21;C33;<>&A22;B33;"<>"&"")+
    NB.SI.ENS(C35;"<>"&A11;C35;"<>"&A12;C35;"<>"&A13;C35;"<>"&A14;C35;"<>"&A20;C35;<>&A21;C35;<>&A22;B35;"<>"&"")+
    '.... etc
    )/2)-C155
    les activités sont représentés dans des cellules A11, A12, A13...
    la partie B29;"<>"&"" est pour ne prendre que les lignes où il y a un salarié (sur les 40 possibilités d'effectif)
    ce qui donne 9 101 caractères sur 82 lignes
    j'ai déjà retirer tous les dollars.

    Est-ce quelqu'un aurait une autre idée de calcul ?

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    Salut,

    2 pistes:
    1- faire la même chose, mais en VBA(Attention: VBA est plus lent que les formules Excel!)
    2- tu connais la possibilité de donner un nom à une plage de cellule?
    Tu eux aussi donner un nom à une formule de calcul!
    Donc essais de créer un nom, et tu lui affectes ta formule.
    Dans les cellules, tu appelles ce nom.
    Dacodac?
    Cordialement,

  3. #3
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    Bonjour Philippe,
    Merci pour ta réponse rapide,
    Non je ne connais pas la possibilité de donner
    un nom à une formule de calcul!
    mais comment ?
    Donc essais de créer un nom, et tu lui affectes ta formule.
    J'ai regardé dans le gestionnaire de nom, mais fait référence à ne veux pas de ma formule... ni commentaire...
    Peux-tu m'éclairer stp.

    Pour le choix VBA, tu penses qu'excel acceptera plus de 9000 caractères dans la formule si je la mets sous forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    range("C27").Formula = "=SI(MOIS(MoisCourant)<>MOIS(C4);0;(
    NB.SI.ENS(C29;"<>"&A11;C29;"<>"&A12;C29;"<>"&A13;C29;"<>"&A14;C29;"<>"
    '...
    Si non comment faire avec vba, et comment cela se mettra à jour ?

    Merci

  4. #4
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Si tu passe en VBA ce n'est pas faire la même chose et appliquer ta formule....
    C'est pour faire le traitement en VBA complètement

    Concernant les formules nommées, tu prends par exemple cette formule tel quelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NB.SI.ENS(Feuil2!C39;"<>"&Feuil2!A17;Feuil2!C39;"<>"&Feuil2!A18;Feuil2!C39;"<>"&Feuil2!A19;Feuil2!C39;"<>"&Feuil2!A20;Feuil2!C39;"<>"&Feuil2!A26;Feuil2!C39;"<>"&Feuil2!A27;Feuil2!C39;"<>"&Feuil2!A28;Feuil2!B39;"<>"&"")
    Tu va dans le gestionnaire de noms, tu en créé un nouveau que tu appel par exemple _c39 en référence à la cellule C39
    Puis après ta grande formule deviens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    =SI(MOIS(MoisCourant)<>MOIS(C4);0;(
    _c29+
    _c30+
    _c32+
    _c33+
    _c35+
    '.... etc
    )/2)-C155

  5. #5
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    Je te montre avec une formule très simple,
    qui fait juste de la concaténation.
    NB: je te garantie pas que ça marche, il faut essayer!
    Cordialement,

    EDIT: à cerede2000: il marche bien ton petit logiciel!
    Images attachées Images attachées  

  6. #6
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    Un grand merci à vous deux.

    Si tu passe en VBA ce n'est pas faire la même chose et appliquer ta formule....
    C'est pour faire le traitement en VBA complètement
    J'ai déjà mis des plombes à écrire ces formules, à comprendre ce que je faisais et à corriger les erreurs, alors résoudre le pb avec vba, j'imagine même pas comment c'est possible

    Je vais donc couper mes formules en 4, comme vous me le suggerez.
    Je reviens si j'ai un pb ou pour valider.

    Encore un grand merci pour vos explications. Super !

  7. #7
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 562
    Par défaut
    Bonjour

    Déjà tu peux remplacer par mais on doit pouvoir optimiser la référence aux activités et aux motifs d'absence mais il faudrait une idée de ce à quoi ressemble ton tableau...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Limiter les lignes à 80 caractères
    Par nico33410 dans le forum Eclipse C & C++
    Réponses: 4
    Dernier message: 03/07/2015, 10h00
  2. VBScript - Excel - Et les Formules
    Par karon dans le forum VBScript
    Réponses: 4
    Dernier message: 16/06/2014, 14h48
  3. Réponses: 5
    Dernier message: 06/02/2014, 20h43
  4. Réponses: 3
    Dernier message: 18/11/2011, 14h50
  5. [OpenOffice][Tableur] Export excel sans les formules (uniquement les valeurs)
    Par stacquet dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 03/04/2009, 21h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo