Choix classeur actif vba

Résolu
sylvia -  
 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
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. Utilisateur anonyme
     
    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