Fonction équivalente à ADRESSE (excel) en VB6?

mossoux Messages postés 4 Date d'inscription lundi 4 décembre 2000 Statut Membre Dernière intervention 10 mars 2008 - 9 mars 2008 à 12:26
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 10 mars 2008 à 22:08
ne trouvant pas la fonction équivalente "ADRESSE" en VB, je calcule l'adresse de la cellule recherchée dans la feuille de calcul "feuil2", par ex en "R9", et la récupère ensuite en VB. Mes données sont en "Feuil1"

cellule "R9"
   =INDIRECT("feuil1!"&ADRESSE(7;R4))

dans ma routine VB
   ...
       Sheets("Feuil2").Range("b1").Formula = "=r9"
ou 
       Sheets("Feuil2").Range("b1").value = "=r9"
   ...

Il doit y avoir moyen de faire plus court... Je pensais pouvoir taper l'instruction 

   Range("B1").formula= "INDIRECT("feuil1!"&ADRESSE(7;R4))"

mais cela coince car les "guillement" entourant FEUIL1 provoquent une erreur... Dans d'autre logiciel, cela se solutionne en mettant un slach / devant le guillement (/"). Y a-t-il un équivalent en VB?

Merci Pierre

10 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
9 mars 2008 à 13:35
Oui DoubleGuillemet

Pour mettre un guillemet dans une chaine de caractère en VB, il faut le doubler

pour avoir une chaine contenant Le "chien" du voisin, il faut la déclarer comm suit:

chn = "Le ""chien"" du voisin"

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
mossoux Messages postés 4 Date d'inscription lundi 4 décembre 2000 Statut Membre Dernière intervention 10 mars 2008
9 mars 2008 à 17:56
Cela marche pour une chaîne de type "STRING" mais dans le cas de ma formule j'obtiens un message "erreur d'application: 1004"...


Range("B1").Value = "=INDIRECT(""feuil1!""&ADRESSE(1;1))"

Je ne comprends pas pourquoi?
Merci pour vos tuyaux


 
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
10 mars 2008 à 09:51
propriété Address des Objets Range
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
10 mars 2008 à 09:52
et pour placer une formule quelque part, c'est pas .Value, c'est .Formula...


Range("B1").Formula = "=INDIRECT(""feuil1!""&ADRESSE(1;1))"

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
10 mars 2008 à 10:27
Et remplace le point-virgule par une virgule. C'est important lorsqu'on utilise Formula plutôt que FormulaLocal.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
10 mars 2008 à 10:32
J'ai fait le test et ça inscrit #NOM dans la cellule. Si j'édite cette cellule et presse ENTER, la valeur est bonne. Je ne comprend pas pourquoi ... (?)

Tu pourrais utiliser cette autre méthode
Range("B1").Formula = "=Feuil2!" & Cells(2, 1).Address

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
mossoux Messages postés 4 Date d'inscription lundi 4 décembre 2000 Statut Membre Dernière intervention 10 mars 2008
10 mars 2008 à 21:36
Cela marche en tapant l'instruction "ADDRESS" en anglais

Range("B1").Formula = "=INDIRECT(""feuil1!""&ADDRESS(1,1))"

Merci pour les conseils
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
10 mars 2008 à 21:53
évidemment...
j'en perds mon latin... euh anglais...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
mossoux Messages postés 4 Date d'inscription lundi 4 décembre 2000 Statut Membre Dernière intervention 10 mars 2008
10 mars 2008 à 22:00
Toujours dans le même ordre d'idée que faire pour stocker le résultat dans une variable plutôt que dans une cellule de ma feuille de calcul?

Range("Q2").Formula = "=Sum(INDIRECT(""feuil2!""&R6))"  - la cellule R6 contient la plage de cellules à sommer

Si je tape

DIM tempVAR

tempVAR =  "=Sum(INDIRECT(""CoursBourse!""&R6))"
tempVAR enregistre la chaîne STRING    =Sum(INDIRECT("CoursBourse!"&R6)) a lieu d'une valeur

Merci pour vos filons
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
10 mars 2008 à 22:08
Tu pourrais regarder du côté de WorksheetFunction

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Rejoignez-nous