XL 2019 Faire référence au nom de la feuille active ( ActiveSheet )

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Atiom

XLDnaute Occasionnel
Bonjour,

Dans le code ci-dessous je souhaiterais remplacer 3 lignes

ThisWorkbook.Sheets("Base_VBA").Range("A2:A43").Value = nom
ThisWorkbook.Sheets("Base_VBA").Range("B2:B43").Value = semaine
ThisWorkbook.Sheets("Base_VBA").Range("C2:C43").Value = jour

Il faudrait remplacer ("Base_VBA") par le nom de la feuille active

J’ai essayé sans succès
ThisWorkbook. ActiveSheet.Name Range("A2:A43").Value = nom
Merci d’avance pour votre aide.

VB:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False

    Dim wbSource As Workbook
    Dim wsSource As Worksheet
    Dim semaine As Variant
    Dim nom As Variant
    Dim jour As Variant
  
 '< >Définir et ouvrir le classeur source
    Workbooks.Open "\Users\Fichier1.xlsm"
    Set wbSource = Workbooks("Fichier1.xlsm")
' <<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'< >Définir la feuille du classeur
    Set wsSource = wbSource.Sheets("1")
' <<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

'< >Récupérer les valeurs des cellule source
    nom = wsSource.Range("H$2").Value
    semaine = wsSource.Range("D$3").Value
    jour = wsSource.Range("B5:B46").Value

    '< >Affiche les valeurs dans cette feuille
    ThisWorkbook.Sheets("Base_VBA").Range("A2:A43").Value = nom
    ThisWorkbook.Sheets("Base_VBA").Range("B2:B43").Value = semaine
    ThisWorkbook.Sheets("Base_VBA").Range("C2:C43").Value = jour

  '< >Ferme le classeur source
    wbSource.Close SaveChanges:=False
' <<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
      
    Application.ScreenUpdating = True
End Sub
 
Bonsoir,

Merci a vous 3 pour les propositions.
VB:
ThisWorkBook.ActiveSheet.Range("A2:A43").Value =
Ca fonctionne parfaitement.
Par contre avec les deux autres solutions j'ai des erreurs.
Encore grand merci bonne soirée et à bientôt.
 
Re,

Toujours dans le même code je m'aperçois que si je change l'emplacement du dossier source il faut changer le chemin dans chaque feuille.
Est-ce qu'il y a un moyen d'éviter cela ?
Par exemple mettre le chemin dans une cellule et le code VBA s'adapte automatiquement dans toutes les feuilles ?
Voilà les lignes à changer:
VB:
 '< >Définir et ouvrir le classeur source
    Workbooks.Open "\Users\Fichier1.xlsm"
    Set wbSource = Workbooks("Fichier1.xlsm")

Merci
 
Re,
Merci goube je pense que t'as sans aucun mais raison!
Mais après plusieurs essais de code j'ai malheureusement toujours des erreurs!
Donc :
J'ai ajouté une feuille que j'ai renommé Info
Dans la cellule A1 j'ai mis \Users\Fichier1.xlsm
et en A2 j'ai mis Fichier1.xlsm
Les deux chemins nécessaires au fonctionnement de mon code que fonctionne bien.
Concrètement comment je peux modifier le code ci-dessous afin de remplacer les lignes:
VB:
    Workbooks.Open "\Users\Fichier1.xlsm"
   Set wbSource = Workbooks("Fichier1.xlsm")
par les valeurs des cellules A1 et A2 de la feuille Info.

Merci infiniment de votre aide

VB:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False

    Dim wbSource As Workbook
    Dim wsSource As Worksheet
    Dim semaine As Variant
    Dim nom As Variant
    Dim jour As Variant
 
 '< >Défini et ouvre le classeur source
    Workbooks.Open "\Users\Fichier1.xlsm"
    Set wbSource = Workbooks("Fichier1.xlsm")
' <<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'< >Défini la feuille du classeur
    Set wsSource = wbSource.Sheets("1")
' <<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

'< >Récupérer les valeurs des cellule source
    nom = wsSource.Range("H$2").Value
    semaine = wsSource.Range("D$3").Value
    jour = wsSource.Range("B5:B46").Value

    '< >Affiche les valeurs dans cette feuille
      ThisWorkbook.ActiveSheet.Range("A2:A43").Value = nom
      ThisWorkbook.ActiveSheet.Range("B2:B43").Value = semaine
      ThisWorkbook.ActiveSheet.Range("C2:C43").Value = jour

  '< >Ferme le classeur source
    wbSource.Close SaveChanges:=False
' <<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  
    Application.ScreenUpdating = True
End Sub
  ThisWorkbook.ActiveSheet.Range("C2:C43").Value = jour
 
Re, sylvanu
Code:
Dim Fichier$, T
Fichier = Worksheets("Info").Range("A1").Value
Workbooks.Open Fichier
T = Split(Fichier, "\")
Set wbSource = Workbooks(T(UBound(T)))
  
'< >Défini la feuille du classeur
    Set wsSource = wbSource.Sheets("1")
' <<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Comme cela ?
Dans la cellule A1 de la feuille Info j'ai mis Users\Fichier1.xlsm

Je dois faire quelque chose de faux puisque ça ne marche pas !
 
Bonsoir.
Set wsSource = wbSource.Sheets("1")
Avez vous au moins une feuille nommée "1" ?
Parce que si c'est la 1ère feuille qui vous intéresse, il faut spécifier son numéro d'ordre par un nombre, pas une constante String !

Par ailleurs vous vous compliquez bien la vie parce que la méthode Open de l'objet Workbooks renvoie un objet Workbook.
Donc : Set wsSource = Workbooks.Open("\Users\Fichier1.xlsm").Sheets(1)
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
775
Réponses
9
Affichages
783
Réponses
2
Affichages
960
Réponses
3
Affichages
816
Retour