A voir également:
- Valeurcube excel
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Mise en forme conditionnelle excel - Guide
3 réponses
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 237
Modifié par eriiic le 19/01/2011 à 12:43
Modifié par eriiic le 19/01/2011 à 12:43
Bonjour tout le monde,
L'enregistreur de macro utilise .formulaR1C1.
Mais tu n'es pas obligé de l'utiliser, tu as également .formula qui te permet d'utiliser les références de type A1 sans te prendre la tête.
D'autre part ces 2 propriétés t'obligent à utiliser le nom anglais des fonctions.
Tu as également .formulaLocal (et .formulaLocalR1C1) qui elles utilisent les noms de fonctions de la langue utilisée.
Ce qui simplifie considérablement l'écriture en vba : un copier-coller de ta fonction.
Puis le remplacement des parties variables (sans oublier de fermer et de rouvrir tes chaines avec " " à chaque remplacement).
Par exemple remplacer A1 par: " & col & lig & "
Sinon le principe est celui expliqué par ccm81 : une chaine concaténée pouvant utiliser des variables.
eric
L'enregistreur de macro utilise .formulaR1C1.
Mais tu n'es pas obligé de l'utiliser, tu as également .formula qui te permet d'utiliser les références de type A1 sans te prendre la tête.
D'autre part ces 2 propriétés t'obligent à utiliser le nom anglais des fonctions.
Tu as également .formulaLocal (et .formulaLocalR1C1) qui elles utilisent les noms de fonctions de la langue utilisée.
Ce qui simplifie considérablement l'écriture en vba : un copier-coller de ta fonction.
Puis le remplacement des parties variables (sans oublier de fermer et de rouvrir tes chaines avec " " à chaque remplacement).
Par exemple remplacer A1 par: " & col & lig & "
Sinon le principe est celui expliqué par ccm81 : une chaine concaténée pouvant utiliser des variables.
eric
ccm81
Messages postés
10899
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
25 octobre 2024
2 422
Modifié par ccm81 le 19/01/2011 à 10:26
Modifié par ccm81 le 19/01/2011 à 10:26
bonjour
une formule style R1C1 est une chaine de caractere, qui doit etre exactement celle qui figure dans une cellule excel, on l'obtient en concatenant simplement les différentes parties de la formule
un exemple avzec un nom de feuille
et pour ton exemple de reference absolue ($)
i = 4
L = 3
R[i]C[L]
f = "=R" & i & "C" & L
qui donnera dans la feuille excel
=L4C3
ou
=$C$4
selon le style choisi (L1C1 ou A1)
bonne suite
une formule style R1C1 est une chaine de caractere, qui doit etre exactement celle qui figure dans une cellule excel, on l'obtient en concatenant simplement les différentes parties de la formule
un exemple avzec un nom de feuille
Const f1 = "'Feuil1'" dim b1 as string b1 = "=" & f1 & "!R" & lig & "C" & col1 - 1 Cells(i, co2).FormulaR1C1 = b1
et pour ton exemple de reference absolue ($)
i = 4
L = 3
R[i]C[L]
f = "=R" & i & "C" & L
qui donnera dans la feuille excel
=L4C3
ou
=$C$4
selon le style choisi (L1C1 ou A1)
bonne suite
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 237
20 janv. 2011 à 13:48
20 janv. 2011 à 13:48
Bonjour,
Le message est : "Mémoire insuffisante
Essaie déjà en fermant et relançant excel...
Pour déposer un fichier : cijoint.fr et coller ici le lien fourni.
eric
Le message est : "Mémoire insuffisante
Essaie déjà en fermant et relançant excel...
Pour déposer un fichier : cijoint.fr et coller ici le lien fourni.
eric
Rebonjour Eriiic, voici le lien vers mon fichier :
http://www.cijoint.fr/cjlink.php?file=cj201101/cij4AZitYJ.xls
En lançant le code, j'obtiens une erreur "Mémoire insuffisante" lorsque je suis sur l'ensemble de la population française.
De plus j'ai l'impression que ma variable TxtPopu est inadaptée et ne stocke pas comme je l'aurai souhaité tout les informations que j'y envoie.
Bonne réception.
Edit : J'ai bien essayer de redémarrer mon ordinateur avant de relancer le code, mais ça ne marche toujours pas.
http://www.cijoint.fr/cjlink.php?file=cj201101/cij4AZitYJ.xls
En lançant le code, j'obtiens une erreur "Mémoire insuffisante" lorsque je suis sur l'ensemble de la population française.
De plus j'ai l'impression que ma variable TxtPopu est inadaptée et ne stocke pas comme je l'aurai souhaité tout les informations que j'y envoie.
Bonne réception.
Edit : J'ai bien essayer de redémarrer mon ordinateur avant de relancer le code, mais ça ne marche toujours pas.
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 237
Modifié par eriiic le 20/01/2011 à 20:21
Modifié par eriiic le 20/01/2011 à 20:21
lorsque je suis sur l'ensemble de la population française
Ah oui ? Et on fait comment pour y être ??
De toute façon je ne peux rien tester pour l'instant, tu utilises une fonction d'excel 2007 : _xlfn.CUBEMEMBER ?
eric
Ah oui ? Et on fait comment pour y être ??
De toute façon je ne peux rien tester pour l'instant, tu utilises une fonction d'excel 2007 : _xlfn.CUBEMEMBER ?
eric
Bonjour Eriiic,
lorsque je suis sur l'ensemble de la population française
Dans l'onglet Popu j'ai différent segment de la population française.
Je navigue parmi ces segments de colonne en colonne, et si un segment est composé de plusieurs sous segments, ces derniers sont écrits dans les lignes dessous. Le code parcours les colonnes 1 à 1 et s'arrette sur les sous segments si il y en a.
Concernant la fonction d'Excel 2007, sauf erreur de ma part, ce n'est pas la racine du problème. On pourra remplacer cette fonction par n'importe quelle autre fonction d'Excel, à partir du moment ou chaque fonction prend suffisamment de place pour "remplir" la variable et/ou la formule Excel.
lorsque je suis sur l'ensemble de la population française
Dans l'onglet Popu j'ai différent segment de la population française.
Je navigue parmi ces segments de colonne en colonne, et si un segment est composé de plusieurs sous segments, ces derniers sont écrits dans les lignes dessous. Le code parcours les colonnes 1 à 1 et s'arrette sur les sous segments si il y en a.
Concernant la fonction d'Excel 2007, sauf erreur de ma part, ce n'est pas la racine du problème. On pourra remplacer cette fonction par n'importe quelle autre fonction d'Excel, à partir du moment ou chaque fonction prend suffisamment de place pour "remplir" la variable et/ou la formule Excel.
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 237
21 janv. 2011 à 19:38
21 janv. 2011 à 19:38
Bonsoir,
J'ai relevé 2 erreurs au même endroit, à partir de la ligne 1506.
D'une part formule trop longue (>1024 pour excel 2003, sur 2007 il faudra que tu sois <=8192), d'autre part à ce moment cette formule se termine par '+'
J'ai ajouté des lignes dans ton code pour que la macro s'arrete juste avant l'erreur et liste qcq variables.
A toi de voir ce qui cloche dans la construction de ta formule...
D'ailleurs vu le nombre et le type de calcul il serait plus intéressant de n'inscrire que le résultat dans la cellule (si c'est possible pour ton projet).
Et lorsque tu auras fini de déboguer d'ajouter au début application.screenupdating=false , et de le rétablir avec TRUE en fin de macro
Les versions 2003 et 2007 du fichier modifié : http://www.cijoint.fr/cjlink.php?file=cj201101/cij7VstHKI.zip
eric
J'ai relevé 2 erreurs au même endroit, à partir de la ligne 1506.
D'une part formule trop longue (>1024 pour excel 2003, sur 2007 il faudra que tu sois <=8192), d'autre part à ce moment cette formule se termine par '+'
J'ai ajouté des lignes dans ton code pour que la macro s'arrete juste avant l'erreur et liste qcq variables.
A toi de voir ce qui cloche dans la construction de ta formule...
D'ailleurs vu le nombre et le type de calcul il serait plus intéressant de n'inscrire que le résultat dans la cellule (si c'est possible pour ton projet).
Et lorsque tu auras fini de déboguer d'ajouter au début application.screenupdating=false , et de le rétablir avec TRUE en fin de macro
Les versions 2003 et 2007 du fichier modifié : http://www.cijoint.fr/cjlink.php?file=cj201101/cij7VstHKI.zip
eric
19 janv. 2011 à 15:39
merci pour le .formulaLocalR1C1, et dire que je n'y avais jamais pensé !!!!
cordialement
20 janv. 2011 à 09:38
J'ai pu résoudre mon problème en utilisant la réponse de ccm81, la réponse d'eriic m'aura quant à elle permis de comprendre un peu plus comment fonctionnant les différents formula. J'avoue que j'ignorais qu'il y avait moyen d'écrire formula (id est sans le R1C1). Ca m'aurait changé la vie :p.
Cependant (y'a toujours un cependant ... :) ) je rencontre actuellement un autre problème.
L'idéal pour que je vous l'expose serai que je mette un fichier excel en pièce jointe. Pourriez vous m'indiquer un site sur lequel je pourrai stocker mon fichier, à l'image de imagehack pour les images.
Merci encore.
20 janv. 2011 à 10:46
Le message est : "Mémoire insuffisante".
Je préfererai donc vous fournir mon fichier , plutot que de vous donner des informations éventuellement incomplètes.