IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Aide pour modifier un code


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut Aide pour modifier un code
    Bonjour à tous,

    Voici le code que je cherche à modifier, mais je galère. J'ai mis en rouge les lignes à modifier avec les explications adéquates.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Sub TestB()
    Dim wbkSaisie As Workbook 'Ici doit faire appel à un répertoire (K:\Suivi_Engage)
    Dim shtFich As Worksheet, shtFich2 As Worksheet 'Ici doit faire référence aux fichiers du répertoire
    Dim LastLigF As Long
    Dim NumLig As String, NumLig2 As String
    Dim NewRec As Boolean, Exist As Boolean
    Dim NewRech As Boolean, Existe As Boolean
    
    Application.ScreenUpdating = False
    
    Set wbkSaisie = ThisWorkbook 'Répertoire K:\Suivi_Engage
    NumLig = Me.CmbNum1.Value
    NumLig2 = Me.CmbNum2.Value
    Set shtFich = ThisWorkbook.Sheets("L" & NumLig)'Doit correspondre à un fichier du répertoire (par exemple 343.xls)
    Set shtFich2 = ThisWorkbook.Sheets("L" & NumLig2) 'idem
    shtFich.Activate 'activer le fichier et ouvrir la feuille "Recap"
    shtFich2.Activate 'idem
    NewRec = False
    NewRech = False
    
    'Pour le reste des modifications, je pense pouvoir m'en sortir
    
            For Each WS In ThisWorkbook.Worksheets
                If WS.name = "L" & NumLig Then 'on cherche si la feuille existe
                    Set shtFich = WS
                    Exist = True
                    Exit For
                End If
                Next WS
                    If Not Exist Then
                        Set shtWS = ThisWorkbook.Sheets.Add(Type:=xlWorksheet) 'si elle n'existe pas on la créée
                        shtFich.name = "L" & NumLig
                        NewRec = True
                    End If
                    
            For Each WD In ThisWorkbook.Worksheets
                If WD.name = "L" & NumLig2 Then
                    Set shtFich2 = WD
                    Existe = True
                    Exit For
                End If
                Next WD
                    If Not Existe Then
                        Set shtWD = ThisWorkbook.Sheets.Add(Type:=xlWorksheet)
                        shtFich2.name = "L" & NumLig2
                        NewRech = True
                    End If
    Merci par avance pour votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Voilà j'ai fait cela mais ça ne fonctionne pas. Qu'ai-je oublié ?
    Merci par avance pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    Sub TestB()
    Dim Rep As String
    Dim Wbk As Workbooks
    Dim Wbka As Workbooks
    Dim ShtFich As Worksheet, ShtFich2 As Worksheet
    Dim LastLigF As Long
    Dim NumLig As String, NumLig2 As String
     
        Application.ScreenUpdating = False
     
      'Ouvre les 2 fichiers recherchés  
        Set Wbk = Application.GetOpenFilename(ShtFich, "Excel files(*.xls)")
        Set Wbka = Application.GetOpenFilename(ShtFich2, "Excel files(*.xls)")
     
        NumLig = Me.CmbNum1.Value
        NumLig2 = Me.CmbNum2.Value
     
        Set ShtFich = Wbk(NumLig & ".xls")
        Set ShtFich2 = Wbka(NumLig2 & ".xls")
        With ShtFich
        .Sheet("Recap").Activate 'Ouvre la feuille "Recap" du 1er fichier
        End With
        With ShtFich2
        .Sheet("Recap").Activate 'Ouvre la feuille "Recap" du 2ème fichier
        End With

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    Bonjour nec

    tu n'utilise pas le bontype de variable

    ShtFich n'est pas workbook mais le nom recuperé dans le dossier donc un string etc....

    essaie de ne pas metre de type pour voir
    Au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour,

    Voici le code modifié, mais cela ne fonctionne pas, un message d'erreur me dit : "Erreur de compilation - Objet requis" sur la ligne en gras.
    Je ne m'en sors pas !! Merci par avance pour votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Sub TestB()
    Dim Rep As String
    Dim Wbk As Workbooks
    Dim Wbka As Workbooks
    Dim shtFich As String, ShtFich2 As String
    Dim LastLigF As Long
    Dim NumLig As String, NumLig2 As String
    
        Application.ScreenUpdating = False
        
        Set Wbk = Application.GetOpenFilename(shtFich, "Excel files(*.xls)") 'le fichier actif
        Set Wbka = Application.GetOpenFilename(ShtFich2, "Excel files(*.xls)") 'le fichier fermé dans 'K:\Saisi_Engage\*.xls
        
        NumLig = Me.CmbNum1.Value
        NumLig2 = Me.CmbNum2.Value
        
        Set shtFich = Wbk(NumLig & ".xls")
        Set ShtFich2 = Wbka(NumLig2 & ".xls")
        With shtFich
        .Sheet("Recap").Activate 'Ouvre la feuille "Recap"
        End With
        With ShtFich2
        .Sheet("Recap").Activate 'Ouvre la feuille "Recap"
        End With
    'suite de la macro

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Par défaut
    Bonjour

    essayez de déclarer la variable NumLig, en Integer

    cordialement

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    NumLig = Me.CmbNum1.Value
        NumLig2 = Me.CmbNum2.Value
    c'est quoi numlig ? un chiffre un mot ou une chaine de caracteres
    c'est quoi "me"un userform?????
    si c'est le cas un wbk1.activate est necessaire apres l'ouverture du 2 eme fichier
    car me peut representer un sheets,un userform en fait la fenetre active tu comprends??
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    NumLig est un chiffre qui correspond un nom de fichier qui correspond au chiffre trouvé dans le Combo (CmbNum1) de l'UF (UFvir), avec l'extention .xls (en général il est déjà ouvert puisque j'active ma macro à partir de ce fichier actif)

    NumLig2 est également un chiffre est il correspond aussi à un nom de fichier.

    NumLig est le numéro du fichier ouvert, NumLig2 est celui du fichier que l'on doit aller ouvrir.

  8. #8
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    et le code il est bien dans ton userform ? ( ME = "Moi" et donc désigne l'userform contenant les combobox )

  9. #9
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Citation Envoyé par bbil Voir le message
    et le code il est bien dans ton userform ? ( ME = "Moi" et donc désigne l'userform contenant les combobox )
    Oui biensûr.

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    bonjour nec
    je pense avoir compris ton soucis

    tu utilise encore le mauvais type de variables
    regarde un morceau de ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Set Wbk = Application.GetOpenFilename(shtFich, "Excel files(*.xls)") 'le fichier actif
        Set Wbka = Application.GetOpenFilename(ShtFich2, "Excel files(*.xls)") 'le fichier fermé dans 'K:\Saisi_Engage\*.xls
     
        NumLig = Me.CmbNum1.Value
        NumLig2 = Me.CmbNum2.Value
     
        Set shtFich = Wbk(NumLig & ".xls")    Set ShtFich2 = Wbka(NumLig2 & ".xls")
        With shtFich'ici tu utilise le nom(string) comme variable classeur c'est pas bon en fait il faut utilise wbk ou wbkaqui eux sont des variable classeurs
     
        .Sheet("Recap").Activate 'Ouvre la feuille "Recap"
        End With
    d'autant plus que tu, pourrais tousimplement faire
    trucmachin=wbk.name et non pas strffich=classeur puisque c'est une variable (string)
    je ne vois pas vraiment pourquoi tu cherche a redeterminer les variable apres ouverture sert toi de celles ci

    re
    j'ai commenter ton code pour te donner la voix sur ton erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Sub TestB()
    Dim Rep As String
    Dim Wbk As Workbooks
    Dim Wbka As Workbooks
    Dim shtFich As String, ShtFich2 As String
    Dim LastLigF As Long
    Dim NumLig As String, NumLig2 As String
     
        Application.ScreenUpdating = False
     'ICI TU A BIEN DECLARER LES VARIBLES "SHTFICH" MAIS ELLES N'ONT POUR LE MOMMENT AUCUNNE VALEUR !!!!!!!!!
     'alors je vois pas bien ce qu'elles foutent la
        Set Wbk = Application.GetOpenFilename(shtFich, "Excel files(*.xls)")  'le fichier actif
        Set Wbka = Application.GetOpenFilename(ShtFich2, "Excel files(*.xls)") 'le fichier fermé dans 'K:\Saisi_Engage\*.xls
     
        NumLig = Me.CmbNum1.Value
        NumLig2 = Me.CmbNum2.Value
        'INUTILE!!!!INUTILE!!!!!!INUTILE!!!!!
        'ICI  TU RENOMME LA VARIABLE SHTFICH POURQUOI???????????ET EN PLUS TU LA PREND COMME OBJECT(CLASSEUR) HORS CE SONT DES VARIABLES STRING(donc BUG!!!!)
           Set shtFich = Wbk(NumLig & ".xls") 'est -il ouvert au moins ??????????
        'je dirais plutot ca :
        Set shtFich = Wbk.Name
        'idem pour le suivant
        Set ShtFich2 = Wbka(NumLig2 & ".xls")
     
        With shtFich ' ici je mettrais pluto "with wbk"
        .Sheet("Recap").Activate 'active  la feuille "Recap"
        End With
        'ici il doit manquer du code
        'je ne vois pas l'interet d'activer deux classeurs l'un apres l'autre simultanément
     
        With Wbka ' ici je mettrais pluto "with wbka"
        .Sheet("Recap").Activate 'avtive  la feuille "Recap"
        End With
    'suite de la macro
    tu vois ce que je veux dire ????
    Au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour,

    J'ai travaillé sur ce code une bonne partie du weekend mais sans résultat. Il va être temps que je prenne des vacances.
    Voilà ce que j'ai fait, mais j'ai toujours un message d'erreur au niveau du code souligné et gras. Le message est "Membre de méthode ou de données introuvable". J'ai vraiment du mal sur ce coup. Il a des moments comme ça où la solution est là, mais on ne la voit pas.
    Merci par avance pour vos lumières, parce que la mienne est éteinte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Sub TestB()
    Dim Rep As String
    Dim Wbk As Workbooks
    Dim Wbka As Workbooks
    Dim shtFich As String, ShtFich2 As String
    Dim LastLigF As Long
    Dim NumLig As String, NumLig2 As String
    
        Application.ScreenUpdating = False
        
        NumLig = Me.CmbNum1.Value
        NumLig2 = Me.CmbNum2.Value
        
        Set Wbk = Application.GetOpenFilename(NumLig, "Excel files(*.xls)")
        Set Wbka = Application.GetOpenFilename(NumLig2, "Excel files(*.xls)")
            
        Set shtFich = Wbk.Name
        Set ShtFich2 = Wbka.Name 
    'on ouvre les 2 fichiers simultanément afin que la saisie se fasse en même temps
        With Wbk
        .Sheet("Recap").Activate 'Ouvre la feuille "Recap"
        End With
        
        With Wbka
        .Sheet("Recap").Activate 'Ouvre la feuille "Recap"
        End With

  12. #12
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    ne pas confondre workbooks et workbook .

    pour l'affectation d'une chaine de caractères nul besoin d'un set ..

  13. #13
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    ça avance. J'ai donc modifié le code, mais un nouveau message "Objet requis"
    sur la ligne en rouge.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Sub TestB()
    Dim Rep As String
    Dim Wbk As Workbook
    Dim Wbka As Workbook
    Dim shtFich As Object, ShtFich2 As Object
    Dim LastLigF As Long
    Dim NumLig As String, NumLig2 As String
    
        Application.ScreenUpdating = False
        
        NumLig = Me.CmbNum1.Value
        NumLig2 = Me.CmbNum2.Value
        
        Set Wbk = Application.GetOpenFilename(NumLig, "Excel files(*.xls)")  
    Set Wbka = Application.GetOpenFilename(NumLig2, "Excel files(*.xls)")
            
        shtFich = Wbk.Name
        ShtFich2 = Wbka.Name
        'on ouvre les 2 fichiers simultanément afin que la saisie se fasse en même temps
        With Wbk
        .Sheet("Recap").Activate 'Ouvre la feuille "Recap"
        End With
        
        With Wbka
        .Sheet("Recap").Activate 'Ouvre la feuille "Recap"
        End With

  14. #14
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    et elle est censé faire quoi cette ligne en rouge ? que vient faire "NumLig"

  15. #15
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    J'ai refais ma macro complètement sans plus de succès. Je tourne en rond et je n'y vois plus clair.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    Sub TestB()
    Dim Rep As String
    Dim Fich As String
    Dim Fich2 As String
    Dim Fichier1
    Dim Fichier2
    Dim LastLigF As Long
    Dim NumLig As String, NumLig2 As String
    Dim Wbk As Workbook
    Dim Wbka As Workbook
     
     
        Application.ScreenUpdating = False
     
        NumLig = Me.CmbNum1.Value 'Nom du fichier à ouvrir
        NumLig2 = Me.CmbNum2.Value 'Nom du 2ème fichier à ouvrir
     
        Fich = "K:\Suivi_Engage_2013\" & NumLig 'Répertoire où chercher le fichier
        Fich2 = "K:\Suivi_Engage_2013\" & NumLig2 'Répertoire où chercher le 2ème fichier
     
        Fichier1 = Application.GetOpenFilename(Fich, "Excel Files(*.xls),*.xls")
        Fichier2 = Application.GetOpenFilename(Fich2, "Excel Files(*.xls),*.xls")
     
        'on ouvre les 2 fichiers simultanément afin que la saisie se fasse en même temps
        Set Wbk = Fichier1 'ICI MESSAGE D'ERREUR "OBJET REQUIS"
        With ThisWorkbook.Sheets("Recap")
        LastLigF = .Range("P10").End(xlDown).Row + 1
        .Range("P" & LastLigF).Value = LastLigF - 7
        .Range("P" & LastLigF).Value = Me.CmbNum1.Value
        .Range("Q" & LastLigF).Value = Me.CmbNum2.Value
        .Range("R" & LastLigF).Value = Me.TxtMontant.Value
        .Range("T" & LastLigF).Value = Me.TxtDate.Value
        .Range("T" & LastLigF).Value = Format(Me.TxtDate, "mm-dd-yyyy")
        End With
     
        Set Wbka = Fichier2
        With ThisWorkbook.Sheets("Recap")
        LastLigF = .Range("P10").End(xlDown).Row + 1
        .Range("P" & LastLigF).Value = LastLigF - 7
        .Range("P" & LastLigF).Value = Me.CmbNum2.Value
        .Range("Q" & LastLigF).Value = Me.CmbNum1.Value
        .Range("S" & LastLigF).Value = Me.TxtMontant.Value
        .Range("T" & LastLigF).Value = Me.TxtDate.Value
        .Range("T" & LastLigF).Value = Format(Me.TxtDate, "mm-dd-yyyy")
        End With
     
    'Suite de la macro
    PS : Information importante, il y a obligatoirement un des 2 fichiers déjà ouvert.

  16. #16
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Faudrait que tu nous dise ce que tu veux faire ..

    GetOpenFilename permet de "demander" à l'utilisateur le nom du fichier à ouvrir ... mais n'ouvre pas ce fichier .

  17. #17
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    En cliquant sur un bouton, j'ouvre un formulaire. Dans celui-ci, 2 Combo, un nommé CmbNum1 et l'autre CmbNum2.

    Les données choisies dans ces combo correspondent à des noms de fichier, par exemple si l'on choisi 24, cela correspond au fichier 24.xls du répertoire K:\Suivi_Engage_2013.

    Dans les noms choisis, il y en a un qui est obligatoirement ouvert. Une fois les fichiers ouverts, on y insèrent les données se trouvant dans le formulaire.

  18. #18
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour nec
    purré si ca c'est pas tourner en rond je rejoins un peu bbill

    que veux tu faire exactement

    ici thisworkbook représente le fichier actif pas forcement le wbka idem pour l'autre d'ailleurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set Wbka = Fichier2
        With ThisWorkbook.Sheets("Recap")
    dis moi la valeur de numlig pour voir

    car il y a un truc que je ne comprend pas

    Tu détermine 2 fichiers avec getopen......
    et 2 autre avec numlig

    J'avoue que c'est de plus en plus noir par ici
    en plus ici tu dis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Wbk = Fichier1 'ICI MESSAGE D'ERREUR "OBJET REQUIS"
    c est normal fichier1contien le chemin complet du fichiers1 pas que son nom!!!!!

    ensuite pour quoi utiliser getopen.... sachant que le chemin complet est deja determiné???????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    dim fichier1 as workbook,fichier2 as workbook
     
    set fichier1= workbooks.open"K:\Suivi_Engage_2013\" & NumLig 
     set   Fichier2 =workbooks.open  "K:\Suivi_Engage_2013\" & NumLig2  
    fichier1.activate
    with fichier1
    ce que tu veux faire 
    end with
    fichier2.activate
    with fichier2
    ce que tu veux faire 
    end with
    Dis nous en francais ce que tu veux faire on irra plus vite
    Au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  19. #19
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bon avec ce que j'ai compris ...


    rajoute une fonction d'ouverture classeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Function wkOuvreEngage(stFic As String) As Workbook 
        Const REP = "K:\Suivi_Engage_2013\"
        Dim bDeJaOuvert As Boolean
        Dim wk As Workbook
        ' Contrôle si fichier ouvert
        For Each wk In Workbooks
            If StrComp(wk.Name, stFic & ".xls", vbTextCompare) = 0 Then
                bDeJaOuvert = True
                Exit For
            End If
        Next
        If Not bDeJaOuvert Then
            Set wk = Workbooks.Open(REP & stFic)
        End If
        Set wkOuvreEngage = wk
    End Function


    et pour l'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    (...)
    Dim Wbk As Workbook
    Dim Wbka As Workbook
     (...)
     
     
        NumLig = Me.CmbNum1.Value 'Nom du fichier à ouvrir
        NumLig2 = Me.CmbNum2.Value 'Nom du 2ème fichier à ouvrir
     
    set wbk =  wkOuvreEngage (NumLig)
    set wbka =  wkOuvreEngage (NumLig2)
    (..)
     
    'et pour accéder au classeur
     
    With wbk.Sheets("Recap")
        LastLigF = .Range("P10").End(xlDown).Row+1
    (...)

  20. #20
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Voilà le code, mais cela ne fonctionne toujours pas. Les 2 fichiers s'ouvrent bien, mais ensuite j'ai un message d'erreur "Variable objet ou Variant de bloc With non définie"
    Qu'ai-je encore oublié

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Sub TestB()
    Dim LastLigF As Long
    Dim NumLig As String, NumLig2 As String
    Dim Wbk As Workbook
    Dim Wbka As Workbook
    
    
        Application.ScreenUpdating = False
        
        NumLig = Me.CmbNum1.Value
        NumLig2 = Me.CmbNum2.Value
        
    Set wk = wkOuvreEngage(NumLig)
    Set wka = wkOuvreEngage(NumLig2)
    
        'on ouvre les 2 fichiers simultanément afin que la saisie se fasse en même temps
    With Wbk.Sheets("Recap") 'ICI LE MESSAGE D'ERREUR
    LastLigF = .Range("P10").End(xlDown).Row + 1
        .Range("P" & LastLigF).Value = LastLigF - 7
        .Range("P" & LastLigF).Value = Me.CmbNum1.Value
        .Range("Q" & LastLigF).Value = Me.CmbNum2.Value
        .Range("R" & LastLigF).Value = Me.TxtMontant.Value
        .Range("T" & LastLigF).Value = Me.TxtDate.Value
        .Range("T" & LastLigF).Value = Format(Me.TxtDate, "mm-dd-yyyy")
        End With
        
    With Wbka.Sheets("Recap")
    LastLigF = .Range("P10").End(xlDown).Row + 1
        .Range("P" & LastLigF).Value = LastLigF - 7
        .Range("P" & LastLigF).Value = Me.CmbNum2.Value
        .Range("Q" & LastLigF).Value = Me.CmbNum1.Value
        .Range("S" & LastLigF).Value = Me.TxtMontant.Value
        .Range("T" & LastLigF).Value = Me.TxtDate.Value
        .Range("T" & LastLigF).Value = Format(Me.TxtDate, "mm-dd-yyyy")
    
        End With

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. aide pour modifier un code
    Par gian671 dans le forum VB.NET
    Réponses: 1
    Dernier message: 28/06/2009, 08h56
  2. [VB.NET] besoin d'aide pour déchiffrer un code
    Par pcdj dans le forum Windows Forms
    Réponses: 10
    Dernier message: 27/06/2006, 11h32
  3. Aide pour comprendre le code
    Par jfreuff dans le forum Assembleur
    Réponses: 2
    Dernier message: 31/01/2006, 17h54
  4. Je besoin d'aide pour terminer mon code
    Par Paulinho dans le forum C++
    Réponses: 7
    Dernier message: 06/11/2005, 23h30
  5. Pb pour modifier un code. Code vérouillé ?
    Par oz80 dans le forum Access
    Réponses: 1
    Dernier message: 03/11/2005, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo