Je m'explique. Je cherche à mettre à jour un fichier. Pour cela, je veux ouvrir un fichier dans lequel il y a les données sources pour la mise à jour. J'aimerais que le classeur source soit affecté dans une variable pour éviter de le réécrire à chaque fois mais je bloque sur la ligne ci-dessus.
Voici mon code dans son ensemble :
Public FeuilleAppliSource As Worksheet, FichierAppliSource As Workbook 'nom de la feuille et du fichier sources
Sub OuvertureFichierSource()
Dim SCheminFichier As String
'ouvrir le fichier source SCheminFichier = Application.GetOpenFilename()
If SCheminFichier = "" Then Exit Sub Else SCheminFichier = Dir(SCheminFichier) FichierAppliSource = Application.Workbooks(SCheminFichier) End If
FichierAppliSource.Worksheets("Résultat" ).Name = SFeuilleTravail ' SFeuilleTravail est un string qui vaut "Mis à jour" Set FeuilleAppliSource = FichierAppliSource.Worksheets(SFeuilleTravail) FeuilleAppliSource.Copy After:=FeuilleAppliMAJ
End Sub
j'ai essayé aussi ces deux écritures à la place de "FichierAppliSource = Application.Workbooks(SCheminFichier)" : ' FichierAppliSource = Workbooks(ActiveWorkbook.Name) ' SCheminFichier = Left(Dir(SCheminFichier), InStr(1, Dir(SCheminFichier), ".", 1) - 1).
Marsh Posté le 12-12-2011 à 12:19:52
bonjour le forum,
Je suis nouvelle en programmation et je n'arrive pas à me sortir du message "L'indice n'appartient pas à la sélection" provoqué par cette ligne :
FichierAppliSource = Application.Workbooks(SCheminFichier).
Je m'explique. Je cherche à mettre à jour un fichier. Pour cela, je veux ouvrir un fichier dans lequel il y a les données sources pour la mise à jour. J'aimerais que le classeur source soit affecté dans une variable pour éviter de le réécrire à chaque fois mais je bloque sur la ligne ci-dessus.
Voici mon code dans son ensemble :
Public FeuilleAppliSource As Worksheet, FichierAppliSource As Workbook 'nom de la feuille et du fichier sources
Sub OuvertureFichierSource()
Dim SCheminFichier As String
'ouvrir le fichier source
SCheminFichier = Application.GetOpenFilename()
If SCheminFichier = "" Then
Exit Sub
Else
SCheminFichier = Dir(SCheminFichier)
FichierAppliSource = Application.Workbooks(SCheminFichier)
End If
FichierAppliSource.Worksheets("Résultat" ).Name = SFeuilleTravail ' SFeuilleTravail est un string qui vaut "Mis à jour"
Set FeuilleAppliSource = FichierAppliSource.Worksheets(SFeuilleTravail)
FeuilleAppliSource.Copy After:=FeuilleAppliMAJ
End Sub
j'ai essayé aussi ces deux écritures à la place de "FichierAppliSource = Application.Workbooks(SCheminFichier)" :
' FichierAppliSource = Workbooks(ActiveWorkbook.Name)
' SCheminFichier = Left(Dir(SCheminFichier), InStr(1, Dir(SCheminFichier), ".", 1) - 1).
Mais rien ne marche
Pourriez-vous m'aider ? je suis désespérée...
Merci d'avance