Choix classeur actif vba
Résolu
sylvia
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
je travaille en vba sous excel et c'est tout nouveau pour moi.
je cherche une solution à mon petit pb désespérement :
j'ai un classeur acif sur lequel j'ai un userform que je dois précharger de certaines données détenues dans un autre classeur actif lui aussi.
je ne sais pas comment faiire pour dire que c'est du deuxième classeur actif que l'info doit être récupérée.
je crois savoir que pour envoyer dans un textbox par ex faut faire :
textbox.text = worksheets("feul1").Range("h8").value
mais mon pb de sélection de classeur actif reste entier.
merci pour votre aide
je travaille en vba sous excel et c'est tout nouveau pour moi.
je cherche une solution à mon petit pb désespérement :
j'ai un classeur acif sur lequel j'ai un userform que je dois précharger de certaines données détenues dans un autre classeur actif lui aussi.
je ne sais pas comment faiire pour dire que c'est du deuxième classeur actif que l'info doit être récupérée.
je crois savoir que pour envoyer dans un textbox par ex faut faire :
textbox.text = worksheets("feul1").Range("h8").value
mais mon pb de sélection de classeur actif reste entier.
merci pour votre aide
A voir également:
- Vba activer un classeur
- Activer chromecast - Guide
- Activer office gratuitement - Accueil - Bureautique
- Comment activer windows 10 - Guide
- Cle pour activer windows 10 gratuitement - Guide
- Activer pavé tactile pc portable - Guide
2 réponses
Bonjour,
Pour répondre à sylvia
Le traitement s'effectue ici sur 2 classeurs, or chaque instruction
doit toujours pointer sur le bon classeur.
Lorsque que l'on travaille sur plusieurs objets de façon simultanné,
il est souhaitable de mémoriser l'objet de départ, pour ensuite y revenir.
Autre façon de procéder :
Comme je dis toujours en traitement les variables
Le bon type de données dans le bon type d'objet.
Il en est de même pour les déplacements entre feuilles ou classeurs.
Assurez-vous de toujours savoir à quel endroit vous appliqué une instruction.
À l'usage, vous maitriserez mieux cette notion.
Exemple sur des feuilles :
Exemple 2 sur feuilles
En espérant que ce soit plus clair ainsi !
Amicalement
Lupin
Pour répondre à sylvia
Le traitement s'effectue ici sur 2 classeurs, or chaque instruction
doit toujours pointer sur le bon classeur.
Sub Test()
' Varaible objet d'un classeur
Dim WB_Principal As Workbook
' Instanciation de la variable pour connaître le classeur actif
Set WB_Principal = ActiveWorkbook
' Amène le classeurs cible en avant plan, celui-ci devient le [ ActiveWorkbook ]
Workbooks("Classeur2.xls").Activate
' Charge la valeur de la feuille 1 de la cellule H8 dans le TextBox
' De façon plus explicite on devrait écrire
' MonUserform.TextBox.Text = Sheets("Feuil1").Range("H8").value
TextBox.text = Sheets("Feul1").Range("H8").Value
' Retourne au classeur de départ
WB_Principal.Activate
End Sub
Lorsque que l'on travaille sur plusieurs objets de façon simultanné,
il est souhaitable de mémoriser l'objet de départ, pour ensuite y revenir.
Autre façon de procéder :
' Suposons que cette routine est dans le classeur Maitre
Sub Deux_Classeur()
Dim Nom_Maitre As String
Dim Nom_Esclave As String
Nom_Esclave = "Classeur2.xls"
'Sauvegarde du nom du classeur actif
Nom_Maitre = ActiveWorkbook.Name
' Chagement du classeur actif
Workbooks(Nom_Esclave).Activate
' Insertion d'une donnée ou
' autre manipulation dans le classeur actif
Range("A1").Value = "UneValeur"
' Retour au classeur Maitre
Workbooks(Nom_Maitre).Activate
End Sub
'
Comme je dis toujours en traitement les variables
Le bon type de données dans le bon type d'objet.
Il en est de même pour les déplacements entre feuilles ou classeurs.
Assurez-vous de toujours savoir à quel endroit vous appliqué une instruction.
À l'usage, vous maitriserez mieux cette notion.
Exemple sur des feuilles :
Sub ChangeFeuille()
Dim Nom_Fle_Maitre As String
Dim Nom_Fle_Esclave As String
Dim Valeur As Variant
Nom_Fle_Maitre = ActiveSheet.Name
Valeur = Range("B4").Value
Sheets(Nom_Fle_Esclave).Select
Range("B4").Value = Valeur
Sheets(Nom_Fle_Maitre).Select
End Sub
'
Exemple 2 sur feuilles
Sub ChangeFeuille2()
Dim Nom_Fle_Maitre As Worksheet
Dim Nom_Fle_Esclave As Worksheet
Dim Valeur As Variant
Sheets(1).Select
Set Nom_Fle_Maitre = ActiveSheet
Set Nom_Fle_Esclave = Sheets(2)
' Ici, même si nous avons instancié
' l'objet de la feuille Excel [ Sheets(2) ]
' la feuille active est toujours le feuille 1
Valeur = Range("B4").Value
Sheets(Nom_Fle_Esclave).Select
Range("B4").Value = Valeur
Sheets(Nom_Fle_Maitre).Select
End Sub
'
En espérant que ce soit plus clair ainsi !
Amicalement
Lupin