Bonjour à tous, je développe du code VB pour mon boulot et suis bloqué sur une partie automation avec Excell :
Je déclare 2 variables publiques qui récupérent le path de 2 fichier Excel à partir d'une fenêtre comondialog et drive/dir/filebox.
J'utilise un getobject et createobject et vérifie s'il y a déjà une séssion Excel d'ouverte.
Selon le cas, les fichiers Excel sont bien ouverts mais la selections des sheets ne se fait pas et donc ne peux selectionner les valeurs contenues dans les cells.
Code de la partie en question :
On Error Resume Next
Set objExcelMacro = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
Err.Number = Clear
'Nous allons utiliser la variable NomFichierMacroCL qui définie le path + nom fichier de la req sql
' de C.L réalisé dans la feuille requsql
' Créer une instance de l'objet macro C.L si excel pas déjà ouvert
Set objExcelMacro = CreateObject("Excel.Application")
End If
'Une fois la séssion excel ouverte ou déjà ouverte on travaille sur la variable excel object
With objExcelMacro
.Workbooks.Open (NomFichierMacroCL)
.Visible = True 'Rendre Excel visible
.Sheets("synthèse").Activate
'Verification de la date de la dernière sauvegarde du fichier macro C.L
MoisAnFichier = Cells(6, 10).Value
MsgBox MoisAnFichier
End With
'Déclaration des variables pour mémos des valeurs
' Créer 1 instance de l'objet objExcelTdB pour tableau de bord
Set objExcelTdB = GetObject(, "Excel.Application")
With objExcelTdB
.Workbooks.Open (NomFichier3)
.Visible = True 'Rendre Excel visible
.Sheets("ENTREEDATA").Activate
fincol = Range("IV3").End(xlToLeft).Column 'se positionne sur la dernière colonne remplie
valeur = Cells(3, fincol).Value
MsgBox valeur
End With
Mille merci pour vos idées et enfin débloquer cette situation qui perdure.
Bonne journée
A voir également:
Problème de selection worksheet automation Excel avec VB6
J'ai testé ton code, il marche pour la selection des feuilles, sauf, si... on n'a pas le bon nom de la feuille à selectionner. As-tu bien vérifié l'orthographe du nom des feuilles ?
Sinon, aussi, n'oubli pas les points dans les lignes de références...
fincol = . Range("IV3").End(xlToLeft).Column 'se positionne sur la dernière colonne remplie
valeur =. Cells(3, fincol).Value
Pas de problème pour l'orthographe du nom des feuilles.
J'essaye avec les points dans les lignes de réf.
Mais tout laisse à penser que la problématique vient dans la gestion des variables objets puisque la non selection des feuilles (ou mélange entre les 2 objets Excel) dépend si une séssion Excel est déjà ouverte ou pas.
Si pas de séssion ouverte, la selection des feuilles est réalisé parfaitement. Si séssion ouverte (avec 1 fichier Excel quelconque) la selection ne se fait pas ou mal.