Choix classeur actif vba

[Résolu/Fermé]
Signaler
-
 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
A voir également:

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.

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
7
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci


Bonjour,


Exemple type :

Option Explicit

Sub Test()

    Dim WB_Principal As Workbook
    
    Set WB_Principal = ActiveWorkbook
    Workbooks("Classeur2.xls").Activate
    TextBox.text = Sheets("Feul1").Range("H8").Value
    WB_Principal.Activate
    
End Sub
'


Lupin
merci de ton aide,

à quoi sert WB_Principal.Activate alors que juste avant il y a activeWorkbook ?
salut à vous deux!

je voulais savoir si l'exemple que tu as mis peut servir pour charger un bon fichier excel.
en fait j'ai un peu le même problème que sylvia mais dans le sens inverse c'est à dire de mon userform au deuxième fichier excel actif.

merci d'avance