Affecter à une variable le contenu d'une cellule active
cs_xav78
Messages postés2Date d'inscriptiondimanche 17 décembre 2000StatutMembreDernière intervention30 juillet 2008
-
27 juil. 2008 à 18:08
cs_xav78
Messages postés2Date d'inscriptiondimanche 17 décembre 2000StatutMembreDernière intervention30 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
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 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...