A voir également:
- R1c1 excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel moyenne - Guide
3 réponses
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
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
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.
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.
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
merci pour le .formulaLocalR1C1, et dire que je n'y avais jamais pensé !!!!
cordialement
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.
Le message est : "Mémoire insuffisante".
Je préfererai donc vous fournir mon fichier , plutot que de vous donner des informations éventuellement incomplètes.