Adresse cellule active Excel

Shaegal Messages postés 110 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 12 mai 2021 - 6 oct. 2010 à 10:46
Shaegal Messages postés 110 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 12 mai 2021 - 6 oct. 2010 à 13:30
Bonjour,

Je n'arrive pas à trouver le code pour récupérer l'adresse d'une cellule active d'une feuille Excel elle-même active.

Je n'importe pas de référence Excel car ça va de la version 97-2000 à 2010.
Je fais plutôt:
Dim appExcel, Classeur, Feuille, Cellue as Object
appExcel=GetObjet(,"Excel.Application")
Classeur=appExcel.ActiveWorkbook
Feuille=Classeur.ActiveSheet

Mais le code Cellule=Feuille.ActiveCell ne fonctionne pas!

Quelqu'un peut-il m'aider?
Merci

PS: je travail avec VB.net 2008 Express Edition.

7 réponses

lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
6 oct. 2010 à 10:59
Bonjour,

Pour récupérer une adresse d'une celle c'est activecell.address qui te renverre $a$1 par exemple..


L'expérience, c'est une connerie par jour, mais jamais la même..
0
Shaegal Messages postés 110 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 12 mai 2021 1
6 oct. 2010 à 11:11
Bonjour lolokun,

Ce code fonctionnerai sous VBA ou en important une référence Excel.
Seulement, je travail sous VB.net et je n'importe aucune référence pour les raisons cités dans le post précédant.

L'avantage de ne travailler qu'avec des Object est qu'on peut travailler dans n'importe quelle version d'Excel, Word, etc...

Dans cette configuration, la commande ActiveCell donne l'erreur suivante:
Le membre public 'ActiveCell' du type 'Worksheet' est introuvable.

Merci quand d'avoir essayé... ;-)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
6 oct. 2010 à 11:28
Salut

"ne fonctionne pas" ne veut rien dire.
Si tu as une erreur, dis-nous laquelle

Commence par dimensionner correctement tes variables.
Puisque ton fichier doit fonctionner sut plusieurs versions de Excel, impossible de les dimensionner complètement :
Dim appExcel as Object, Classeur as Object, Feuille as Object, Cellue as Object
Vois si cela change quelque chose

Deuxième chose :
Classeur , Feuille ou Cellule étant des objets (et pas des variables), il te faut mettre Set devant la ligne d'affectation :
Set Classeur=appExcel.ActiveWorkbook
Set Feuille=Classeur.ActiveSheet
Il faudra bien sûr faire pareil pour le code qui ne fonctionne pas :
Set Cellule=Feuille.ActiveCell

Astuce :
Bien que tu ne puisses pas faire référence directement aux objets Excel (à cause des version), quand tu développes, déclare proprement tes variables avec la référence complète, genre :
Dim Classeur As Workbook
Une fois que cela fonctionne sur ta machine, mets les Dim en commentaire et ressort tes Dim As Object

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
6 oct. 2010 à 12:09
Désolé, en VB.Net, il n'y a plus de Set
0

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

Posez votre question
Shaegal Messages postés 110 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 12 mai 2021 1
6 oct. 2010 à 12:41
Salut jack,

Holààà! La catégorie à changé. Pourquoi?
Encore une fois, je travail sous VB.NET 2008 et non en langage dérivé VBA, auquel cas je n'aurai pas posté. L'objectif étant de piloter Excel via une petite application externe développée en vb.net.

Je vais essayé de te répondre.
1ère chose:
en vb.net la décalaration de variables de même type peut se faire de la façon suivante: Dim bidule, machin, chose As Integer

2ème chose:
en vb.net, la commande Set disparait

3ème chose:
Puisque je ne peux importer les références Excel, je ne peux écrire:
Dim Classeur As Workbook. Normal, je ne suis pas en VBA.

Merci quand même... ;-)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
6 oct. 2010 à 13:07
Oui, désolé pour la catégorie, ta syntaxe GetObjet n'étant pas courante en .Net (il y a surement mieux)

Si, tu peux écrire Dim Classeur As ExcelTruc.Workbook, mais dans ce cas, tu dois ajouter une référence à Excel et cette référence sera celle de la version de ta machine.
Quand tu déplaceras ton appli sur une machine avec une version différente, tu risques d'avoir des problèmes de compatibilité.
Je pense qu'il faudrait que tu te renseignes de ce côté là.
0
Shaegal Messages postés 110 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 12 mai 2021 1
6 oct. 2010 à 13:30
Pas grave pour la catégorie, l'important est que quelqu'un puisse me répondre.

C'est justement l'utilisation d'Object qui me facilitait la vie. D'ailleurs, avec des Object, les méthodes de pilotage d'Excel diffèrent assez peu de celles avec références ou même en VBA.

Exemple, pour récupérer la valeur d'une cellule il suffit d'écrire:
Dim Valeur = maFeuille.Cells(Ligne, Colonne).Value pour peu qu'on gère les cas où le résultat est Nothing
Ou bien pour y écrire dedans:
maFeuille.Cells(Ligne, Colonne).Value = Valeur
La méthode maFeuille.Cells.Item(Ligne, Colonne).value est identique.

De la même manière on peut faire la mise en page, etc...
Dans ce cas, puisqu'on peut écrire ActiveWorkbook, ActiveSheet, pourquoi pas ActiveCell?
0
Rejoignez-nous