Affecter à une variable le contenu d'une cellule active

cs_xav78 Messages postés 2 Date d'inscription dimanche 17 décembre 2000 Statut Membre Dernière intervention 30 juillet 2008 - 27 juil. 2008 à 18:08
cs_xav78 Messages postés 2 Date d'inscription dimanche 17 décembre 2000 Statut Membre Dernière intervention 30 juillet 2008 - 30 juil. 2008 à 08:28
Bonjour
J'enregistre un fichier "xav1"  excel avec "A" en A1 qui est enregistré sur mon DD avec le curseur en A1(cellule active)

J'ouvre ce fichier excel manuellement

1 Je lance le prgramme VB6 et je veux lire la cellule active qui est ds ce cas A1
Cela fonctionne avec le programme suivant

Private Sub Form_Load()
Set appExcel = CreateObject("excel.application")
appExcel.Visible = True
Set xls = appExcel.Workbooks.Open("c:\xav1")
z = ActiveWorkbook.Name
x$ = ActiveCell.Value
Debug.Print x$, z
appExcel.Quit
Set appExcel = Nothing
End
End Sub

2 je déplace mon curseur en A2 par exemple , je relance mon programme , mais il ne tiens pas compte du changement (cellule active en A2) (sauf si j'enregistre avant de lancer mon programme) mais je ne veux pas enregister à chaque fois

je voudrais arriver à faire fonctionner ce petit programme pour mon autre projet :

J'ai un fichier excel avec un mot par cellule ouvert à l'écran (et je rajoute des mots mais je ne dois pas enregistrer à chaque fois ) , et à chaque clic ds une cellule je veux qu'il me lance google avec ce mot directement dans la barre de tâches

Merci d'avance
XAv78

2 réponses

us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
27 juil. 2008 à 19:54
Bonjour,


Pour ton premier problème, un peu de logique s'impose... Il suffit de séparer les parties du code...

En clair, le code que tu proposes :

1 / Créer un objet en référence à Excel

2 / Récupére le nom du fichier et le contenu de la cellule....
Au passage avec deux belles erreurs de référence, au lieu de :
z = ActiveWorkbook.Name
x$ = ActiveCell.Value
il faut indiquer la référence de l'objet :
z = appexcel.ActiveWorkbook.Name
x$ = appexcel.ActiveCell.Value

3 / Détruit l'objet (Excel)

Donc, comment veux-tu faire référence à la nouvelle cellule, en répétant le code sans l'enregistrer ? c'est impossible, déjà car tu ferme Excel (appexcel.quit), ensuite parce qu'à la ré-ouverture ben la référence sera toujours le fichier de départ...
Bref, passons...

=

Une solution de base qui fonctionne donne ceci :

Dans VB6 avec une userform1 et 2 boutons :


=



Dim AppExcel



Private Sub Command1_Click()
z = AppExcel.ActiveWorkbook.Name
x$ = AppExcel.ActiveCell.Value
Debug.Print x$, z
End Sub



Private Sub Command2_Click()
AppExcel.Quit
Set AppExcel = Nothing
Unload Me
End Sub



Private Sub Form_Load()
Set AppExcel = CreateObject("excel.application")
AppExcel.Visible = True
Set xls = AppExcel.Workbooks.Open("c:\xav1.xls")
End Sub



=

On charge donc la référence à Excel au départ (load), puis la commande1 indique dans Debug, la cellule active (+ fichier). Donc en changeant la cellule dans excel, re-clique sur le bouton pour obtenir les nouvelles données pointées.
La commande2 fermera Excel...

=

Ensuite, pour ton projet... ce n'est pas en VB6 qu'il faut le programmer mais en VBA (visual basic sous Excel). De cette façon tu pourra utiliser facilement les événements associés à la saisie... De plus, le code proposé ci-dessus devient caduc... merci pour l'effort...


Amicalement,
Us.
0
cs_xav78 Messages postés 2 Date d'inscription dimanche 17 décembre 2000 Statut Membre Dernière intervention 30 juillet 2008
30 juil. 2008 à 08:28
Bonjour

Merci beaucoup pour ce code
Pourrais t on faire la même chose mais avec un fichier excel déjà ouvert en faisant reférence à son nom par exemple ?

En vous remerciant par avance
Xav78
0
Rejoignez-nous