Affecter à une variable le contenu d'une cellule active

Signaler
Messages postés
2
Date d'inscription
dimanche 17 décembre 2000
Statut
Membre
Dernière intervention
30 juillet 2008
-
Messages postés
2
Date d'inscription
dimanche 17 décembre 2000
Statut
Membre
Dernière intervention
30 juillet 2008
-
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

Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
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.
Messages postés
2
Date d'inscription
dimanche 17 décembre 2000
Statut
Membre
Dernière intervention
30 juillet 2008

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