Bonjour
J'ai crée une formule moi-même qui fait simplement la somme de nombres. Ces
nombres sont dans des chaines de caractères. Rien de compliqué. Sur la feuille
Excel, dans une cellule j'ai écris '=carried(E3:E5)'
Elle fonctionne très bien.
Mon problème:
Cette application est un générateur de fichiers Excel. Je reproduis les 12 mois
de l'année pour pouvoir encoder les présences de personnes. Je crée, par VBA, de
nouveaux fichiers Excel,j'ajoute 12x la feuille principale (qui contient la
fonction ci-dessous), je recopie le module contenant le VBA pour ma fonction et
enfin, je recopie les éventuels pointages existant de la personne. Une fois
terminé, le nouveau fichier est sauvé et fermé.
Lorsque j'ouvre le nouveau fichier crée, la valeur retourné par ma fonction est
figée. Comme si il ne calculais pas. Je dois réellement encoder ou modifier une
cellule quelconque pour que la formule fonctionne.
Par exemple: En Janvier Mr x a travaillé réellement 10h (valeur bidon), en
février, Mr x à travaillé 15h. Lorsque j'ouvre son fichier, en janvier, ma
formule retourne bien 10h, en février, il affiche également 10h, si j'ouvre le
mois de juillet, il affiche également 10h (malgré que la feuille est vide). Si
je modifie une cellule quelconque en février, le montant se remettra à 15h.
Si je regarde la configuration d'Excel, je suis en calcul automatique. Ce que
j'ai également essayé, lors de la copie des feuilles, je modifie le contenu
d'une cellule (par VBA) en espérant de faire réagir la formule. Rien à faire.
Quelqu'un aurais une idée?
Voici ma fonction:
function carried(zone as Range) as string
total = 0
for each c in zone
total = total + cdbl(zone.value) ' la valeur est dans un String
next c
if total > 0 then
carried = "Carried Forward : +" + total + " hours"
else
carried = "Carried Forward : -" + total + " hours"
end if
end function
Merci d'avance
André
--
NewsGuy.Com 30Gb $9.95 Carry Forward and On Demand Bandwidth
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
bourby
bonjour,
à mon avis il n'y a pas besoin de fonction personnalisée pour faire ce travail: tu peux utiliser les fonctions de conversion dans Excel, et afficher le résultat comme un nombre avec un format personnalisé, ou avec un si(...).
Si tu tiens à cette fonction (mais ça ralentit beaucoup l'exécution), as-tu regardé du côté de Calculate ou déclarer la fonction Volatile?
cordialement
andre.l' wrote:
Bonjour J'ai crée une formule moi-même qui fait simplement la somme de nombres. Ces nombres sont dans des chaines de caractères. Rien de compliqué. Sur la feuille Excel, dans une cellule j'ai écris 'Êrried(E3:E5)' Elle fonctionne très bien.
Mon problème: Cette application est un générateur de fichiers Excel. Je reproduis les 12 mois de l'année pour pouvoir encoder les présences de personnes. Je crée, par VBA, de nouveaux fichiers Excel,j'ajoute 12x la feuille principale (qui contient la fonction ci-dessous), je recopie le module contenant le VBA pour ma fonction et enfin, je recopie les éventuels pointages existant de la personne. Une fois terminé, le nouveau fichier est sauvé et fermé.
Lorsque j'ouvre le nouveau fichier crée, la valeur retourné par ma fonction est figée. Comme si il ne calculais pas. Je dois réellement encoder ou modifier une cellule quelconque pour que la formule fonctionne.
Par exemple: En Janvier Mr x a travaillé réellement 10h (valeur bidon), en février, Mr x à travaillé 15h. Lorsque j'ouvre son fichier, en janvier, ma formule retourne bien 10h, en février, il affiche également 10h, si j'ouvre le mois de juillet, il affiche également 10h (malgré que la feuille est vide). Si je modifie une cellule quelconque en février, le montant se remettra à 15h.
Si je regarde la configuration d'Excel, je suis en calcul automatique. Ce que j'ai également essayé, lors de la copie des feuilles, je modifie le contenu d'une cellule (par VBA) en espérant de faire réagir la formule. Rien à faire.
Quelqu'un aurais une idée?
Voici ma fonction: function carried(zone as Range) as string total = 0 for each c in zone total = total + cdbl(zone.value) ' la valeur est dans un String next c if total > 0 then carried = "Carried Forward : +" + total + " hours" else carried = "Carried Forward : -" + total + " hours" end if end function
Merci d'avance André
bonjour,
à mon avis il n'y a pas besoin de fonction personnalisée pour faire ce
travail: tu peux utiliser les fonctions de conversion dans Excel, et
afficher le résultat comme un nombre avec un format personnalisé, ou
avec un si(...).
Si tu tiens à cette fonction (mais ça ralentit beaucoup l'exécution),
as-tu regardé du côté de
Calculate
ou déclarer la fonction Volatile?
cordialement
andre.l'hoir@ext.cec.eu.int wrote:
Bonjour
J'ai crée une formule moi-même qui fait simplement la somme de nombres. Ces
nombres sont dans des chaines de caractères. Rien de compliqué. Sur la feuille
Excel, dans une cellule j'ai écris 'Êrried(E3:E5)'
Elle fonctionne très bien.
Mon problème:
Cette application est un générateur de fichiers Excel. Je reproduis les 12 mois
de l'année pour pouvoir encoder les présences de personnes. Je crée, par VBA, de
nouveaux fichiers Excel,j'ajoute 12x la feuille principale (qui contient la
fonction ci-dessous), je recopie le module contenant le VBA pour ma fonction et
enfin, je recopie les éventuels pointages existant de la personne. Une fois
terminé, le nouveau fichier est sauvé et fermé.
Lorsque j'ouvre le nouveau fichier crée, la valeur retourné par ma fonction est
figée. Comme si il ne calculais pas. Je dois réellement encoder ou modifier une
cellule quelconque pour que la formule fonctionne.
Par exemple: En Janvier Mr x a travaillé réellement 10h (valeur bidon), en
février, Mr x à travaillé 15h. Lorsque j'ouvre son fichier, en janvier, ma
formule retourne bien 10h, en février, il affiche également 10h, si j'ouvre le
mois de juillet, il affiche également 10h (malgré que la feuille est vide). Si
je modifie une cellule quelconque en février, le montant se remettra à 15h.
Si je regarde la configuration d'Excel, je suis en calcul automatique. Ce que
j'ai également essayé, lors de la copie des feuilles, je modifie le contenu
d'une cellule (par VBA) en espérant de faire réagir la formule. Rien à faire.
Quelqu'un aurais une idée?
Voici ma fonction:
function carried(zone as Range) as string
total = 0
for each c in zone
total = total + cdbl(zone.value) ' la valeur est dans un String
next c
if total > 0 then
carried = "Carried Forward : +" + total + " hours"
else
carried = "Carried Forward : -" + total + " hours"
end if
end function
à mon avis il n'y a pas besoin de fonction personnalisée pour faire ce travail: tu peux utiliser les fonctions de conversion dans Excel, et afficher le résultat comme un nombre avec un format personnalisé, ou avec un si(...).
Si tu tiens à cette fonction (mais ça ralentit beaucoup l'exécution), as-tu regardé du côté de Calculate ou déclarer la fonction Volatile?
cordialement
andre.l' wrote:
Bonjour J'ai crée une formule moi-même qui fait simplement la somme de nombres. Ces nombres sont dans des chaines de caractères. Rien de compliqué. Sur la feuille Excel, dans une cellule j'ai écris 'Êrried(E3:E5)' Elle fonctionne très bien.
Mon problème: Cette application est un générateur de fichiers Excel. Je reproduis les 12 mois de l'année pour pouvoir encoder les présences de personnes. Je crée, par VBA, de nouveaux fichiers Excel,j'ajoute 12x la feuille principale (qui contient la fonction ci-dessous), je recopie le module contenant le VBA pour ma fonction et enfin, je recopie les éventuels pointages existant de la personne. Une fois terminé, le nouveau fichier est sauvé et fermé.
Lorsque j'ouvre le nouveau fichier crée, la valeur retourné par ma fonction est figée. Comme si il ne calculais pas. Je dois réellement encoder ou modifier une cellule quelconque pour que la formule fonctionne.
Par exemple: En Janvier Mr x a travaillé réellement 10h (valeur bidon), en février, Mr x à travaillé 15h. Lorsque j'ouvre son fichier, en janvier, ma formule retourne bien 10h, en février, il affiche également 10h, si j'ouvre le mois de juillet, il affiche également 10h (malgré que la feuille est vide). Si je modifie une cellule quelconque en février, le montant se remettra à 15h.
Si je regarde la configuration d'Excel, je suis en calcul automatique. Ce que j'ai également essayé, lors de la copie des feuilles, je modifie le contenu d'une cellule (par VBA) en espérant de faire réagir la formule. Rien à faire.
Quelqu'un aurais une idée?
Voici ma fonction: function carried(zone as Range) as string total = 0 for each c in zone total = total + cdbl(zone.value) ' la valeur est dans un String next c if total > 0 then carried = "Carried Forward : +" + total + " hours" else carried = "Carried Forward : -" + total + " hours" end if end function
Merci d'avance André
andre.l'hoir
Bonjour,
Merci pour votre réponse. Pouvez-vous me dire comment déclarer la fonction Volatile?
Merci d'avance
André
In article , bourby says...
bonjour,
à mon avis il n'y a pas besoin de fonction personnalisée pour faire ce travail: tu peux utiliser les fonctions de conversion dans Excel, et afficher le résultat comme un nombre avec un format personnalisé, ou avec un si(...).
Si tu tiens à cette fonction (mais ça ralentit beaucoup l'exécution), as-tu regardé du côté de Calculate ou déclarer la fonction Volatile?
cordialement
andre.l' wrote:
Bonjour J'ai crée une formule moi-même qui fait simplement la somme de nombres. Ces nombres sont dans des chaines de caractères. Rien de compliqué. Sur la feuille Excel, dans une cellule j'ai écris 'Êrried(E3:E5)' Elle fonctionne très bien.
Mon problème: Cette application est un générateur de fichiers Excel. Je reproduis les 12 mois de l'année pour pouvoir encoder les présences de personnes. Je crée, par VBA, de nouveaux fichiers Excel,j'ajoute 12x la feuille principale (qui contient la fonction ci-dessous), je recopie le module contenant le VBA pour ma fonction et enfin, je recopie les éventuels pointages existant de la personne. Une fois terminé, le nouveau fichier est sauvé et fermé.
Lorsque j'ouvre le nouveau fichier crée, la valeur retourné par ma fonction est figée. Comme si il ne calculais pas. Je dois réellement encoder ou modifier une cellule quelconque pour que la formule fonctionne.
Par exemple: En Janvier Mr x a travaillé réellement 10h (valeur bidon), en février, Mr x à travaillé 15h. Lorsque j'ouvre son fichier, en janvier, ma formule retourne bien 10h, en février, il affiche également 10h, si j'ouvre le mois de juillet, il affiche également 10h (malgré que la feuille est vide). Si je modifie une cellule quelconque en février, le montant se remettra à 15h.
Si je regarde la configuration d'Excel, je suis en calcul automatique. Ce que j'ai également essayé, lors de la copie des feuilles, je modifie le contenu d'une cellule (par VBA) en espérant de faire réagir la formule. Rien à faire.
Quelqu'un aurais une idée?
Voici ma fonction: function carried(zone as Range) as string total = 0 for each c in zone total = total + cdbl(zone.value) ' la valeur est dans un String next c if total > 0 then carried = "Carried Forward : +" + total + " hours" else carried = "Carried Forward : -" + total + " hours" end if end function
Merci d'avance André
-- NewsGuy.Com 30Gb $9.95 Carry Forward and On Demand Bandwidth
Bonjour,
Merci pour votre réponse. Pouvez-vous me dire comment déclarer la fonction
Volatile?
Merci d'avance
André
In article <OVcfDV2VGHA.4792@TK2MSFTNGP14.phx.gbl>, bourby says...
bonjour,
à mon avis il n'y a pas besoin de fonction personnalisée pour faire ce
travail: tu peux utiliser les fonctions de conversion dans Excel, et
afficher le résultat comme un nombre avec un format personnalisé, ou
avec un si(...).
Si tu tiens à cette fonction (mais ça ralentit beaucoup l'exécution),
as-tu regardé du côté de
Calculate
ou déclarer la fonction Volatile?
cordialement
andre.l'hoir@ext.cec.eu.int wrote:
Bonjour
J'ai crée une formule moi-même qui fait simplement la somme de nombres. Ces
nombres sont dans des chaines de caractères. Rien de compliqué. Sur la feuille
Excel, dans une cellule j'ai écris 'Êrried(E3:E5)'
Elle fonctionne très bien.
Mon problème:
Cette application est un générateur de fichiers Excel. Je reproduis les 12 mois
de l'année pour pouvoir encoder les présences de personnes. Je crée, par VBA, de
nouveaux fichiers Excel,j'ajoute 12x la feuille principale (qui contient la
fonction ci-dessous), je recopie le module contenant le VBA pour ma fonction et
enfin, je recopie les éventuels pointages existant de la personne. Une fois
terminé, le nouveau fichier est sauvé et fermé.
Lorsque j'ouvre le nouveau fichier crée, la valeur retourné par ma fonction est
figée. Comme si il ne calculais pas. Je dois réellement encoder ou modifier une
cellule quelconque pour que la formule fonctionne.
Par exemple: En Janvier Mr x a travaillé réellement 10h (valeur bidon), en
février, Mr x à travaillé 15h. Lorsque j'ouvre son fichier, en janvier, ma
formule retourne bien 10h, en février, il affiche également 10h, si j'ouvre le
mois de juillet, il affiche également 10h (malgré que la feuille est vide). Si
je modifie une cellule quelconque en février, le montant se remettra à 15h.
Si je regarde la configuration d'Excel, je suis en calcul automatique. Ce que
j'ai également essayé, lors de la copie des feuilles, je modifie le contenu
d'une cellule (par VBA) en espérant de faire réagir la formule. Rien à faire.
Quelqu'un aurais une idée?
Voici ma fonction:
function carried(zone as Range) as string
total = 0
for each c in zone
total = total + cdbl(zone.value) ' la valeur est dans un String
next c
if total > 0 then
carried = "Carried Forward : +" + total + " hours"
else
carried = "Carried Forward : -" + total + " hours"
end if
end function
Merci d'avance
André
--
NewsGuy.Com 30Gb $9.95 Carry Forward and On Demand Bandwidth
Merci pour votre réponse. Pouvez-vous me dire comment déclarer la fonction Volatile?
Merci d'avance
André
In article , bourby says...
bonjour,
à mon avis il n'y a pas besoin de fonction personnalisée pour faire ce travail: tu peux utiliser les fonctions de conversion dans Excel, et afficher le résultat comme un nombre avec un format personnalisé, ou avec un si(...).
Si tu tiens à cette fonction (mais ça ralentit beaucoup l'exécution), as-tu regardé du côté de Calculate ou déclarer la fonction Volatile?
cordialement
andre.l' wrote:
Bonjour J'ai crée une formule moi-même qui fait simplement la somme de nombres. Ces nombres sont dans des chaines de caractères. Rien de compliqué. Sur la feuille Excel, dans une cellule j'ai écris 'Êrried(E3:E5)' Elle fonctionne très bien.
Mon problème: Cette application est un générateur de fichiers Excel. Je reproduis les 12 mois de l'année pour pouvoir encoder les présences de personnes. Je crée, par VBA, de nouveaux fichiers Excel,j'ajoute 12x la feuille principale (qui contient la fonction ci-dessous), je recopie le module contenant le VBA pour ma fonction et enfin, je recopie les éventuels pointages existant de la personne. Une fois terminé, le nouveau fichier est sauvé et fermé.
Lorsque j'ouvre le nouveau fichier crée, la valeur retourné par ma fonction est figée. Comme si il ne calculais pas. Je dois réellement encoder ou modifier une cellule quelconque pour que la formule fonctionne.
Par exemple: En Janvier Mr x a travaillé réellement 10h (valeur bidon), en février, Mr x à travaillé 15h. Lorsque j'ouvre son fichier, en janvier, ma formule retourne bien 10h, en février, il affiche également 10h, si j'ouvre le mois de juillet, il affiche également 10h (malgré que la feuille est vide). Si je modifie une cellule quelconque en février, le montant se remettra à 15h.
Si je regarde la configuration d'Excel, je suis en calcul automatique. Ce que j'ai également essayé, lors de la copie des feuilles, je modifie le contenu d'une cellule (par VBA) en espérant de faire réagir la formule. Rien à faire.
Quelqu'un aurais une idée?
Voici ma fonction: function carried(zone as Range) as string total = 0 for each c in zone total = total + cdbl(zone.value) ' la valeur est dans un String next c if total > 0 then carried = "Carried Forward : +" + total + " hours" else carried = "Carried Forward : -" + total + " hours" end if end function
Merci d'avance André
-- NewsGuy.Com 30Gb $9.95 Carry Forward and On Demand Bandwidth