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 :

[VBA-E] Utilisation des classeurs fermés


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de a.dequidt
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Par défaut [VBA-E] Utilisation des classeurs fermés
    Bonjour,


    Dans mon fichier excel j'ai une macro de recherche qui en fonction de la marque et de la référence entrées, va rechercher dans un autre fichier (pour le moment ouvert) la designation le prix et tout le tralala qui va bien pour venir après le coller dans mon fichier.
    Mon second fichier: Tarifs

    Actuellement, a l'ouverture de mon 1er fichier (logiciel), j'ouvre aussi le fichier Tarifs. quand je lance ma macro de recherche tout marche bien.
    Ca fait quelques clignotements dû au changement de pages mais rien de bien méchant.

    Mon probleme est que j'utilise le fichier tarif que lorque je lance ma recherche, et j'aimerai que soit le fichier tarif ne soit pas visible ou qu'il ne s'ouvre meme pas mais que la recherche soit exécutée.

    J'ai deja regarder l'utilisation des classeurs fermés mais un message d'erreur s'affiche.


    Mon code actuel
    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
     
         Windows("Tarifs.xls").Activate
                Sheets(num_onglet).Select
                derniereligne = Range("A65535").End(xlUp).Row
                For i = 2 To derniereligne
                    If Range("A" & i).Value <> "" Then
                        If Range("A" & i).Value = ref Then
                            designation = Cells(i, 2)
                            Windows(nomfichier).Activate
                            Cells(a, 6) = designation
                            Windows("Tarifs.xls").Activate
                            Range("C" & i).Select
                            Selection.Copy
                            Windows(nomfichier).Activate
                            Range("L" & a).Select
                            ActiveSheet.Paste
                            Windows("Tarifs.xls").Activate
                            Range("D" & i).Select
                            Selection.Copy
                            Windows(nomfichier).Activate
                            Range("K" & a).Select
                            ActiveSheet.Paste
                            classe_remise = Range("K" & a).Value
                            Windows("Tarifs.xls").Activate
                            Sheets("Remise").Select
                        End If
                    End If
                Next i

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Tu doit d'abord l'ouvrir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        on error resume next 'au cas ou il est déjà ouvert
        Workbooks.open "Tarifs.xls"
        Workbooks("Tarifs.xls").Activate
    A+

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu ne connais pas
    Application.screenUpdating = False
    que tu place en début de code et que tu remets à false à la fin ?
    Ensuite, pour travailler sur un fichier, tu n'es jamais obligée de le sélectionner ni de l'activer. Je reprends ton code
    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
    Dim FL1 as Worksheet
    Dim FL2 as Worksheet
    Dim FL3 as Worksheet
    Application.screenUpdating = false
    Set FL1 = Workbooks("Tarifs.xls").sheets(num_onglet)
    Set FL2 = Workbooks(nomfichier).Worksheets(NomDeLaFeuille)
    Set FL3 = = Workbooks("Tarifs.xls").Worksheets("Remise")
        derniereligne = FL1.Range("A65535").End(xlUp).Row
        For i = 2 To derniereligne
            If FL1.Range("A" & i).Value <> "" Then
                If FL1.Range("A" & i).Value = ref Then
                    designation = Cells(i, 2)
                    FL2.Cells(a, 6) = designation
                    FL1.Range("C" & i).Copy FL2.Range("L" & a)
                    FL1.Range("D" & i).Copy FL2.Range("K" & a)
                    classe_remise = FL2.Range("K" & a).Value
                    'là je ne sais pas ce que tu en fais, mais si tu as quelque chose
                    'à faire sur ta feuille Remise <> sheets(num_onglet) utilise FL3
                End If
            End If
        Next i
        'ton code suivant...
        Application.screenUpdating = True
    Avec ce code (vérifié et adapté) tu auras toujours la feuille active du départ à l'écran et tu n'auras aucun mvt de feuille.

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour ouskl'n'or
    J'ai essayé ta fonction mais je ne parvient pas à l'employé quand le classeur n'est pas ouvert, Quel est le truc, je ne comprend pas.
    Merci pour tes lumières.
    A+

  5. #5
    Membre confirmé Avatar de a.dequidt
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Par défaut
    En fait j'aimerai que la recherche se fasse alors que le classeur soit fermé, le tarif est relativement lourd (25 Mo) et est très (trop?) peu utilisé :s

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par LeForestier Voir le message
    Bonjour ouskl'n'or
    J'ai essayé ta fonction mais je ne parvient pas à l'employé quand le classeur n'est pas ouvert, Quel est le truc, je ne comprend pas.
    Merci pour tes lumières.
    A+
    C'est pourquoi je pose la question. Ce que j'ai mis fonctionne fichier ouvert.

    Pour travailler sur un fichier fermé, je te conseille de regarder ici, SilkyRoad explique tout ça très bien

    Edit
    Tu as une autre solution fichier fermé mais tu n'auras que les valeurs, pas les formules. Pour ça, il suffit que tu établisses un lien entre ta cellule dans "FL2" et la cellule correspondante prise dans FL1
    Exemple, dans FL2 tu mettrais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FL2.Range("L" & a).formula = "=["& Chemin & NomFich & "]Feuil1!" & adresse
    où adresse est celle de la cellule contenant la valeur à copier.
    Maintenant, il ne reste qu'à adapter à ton code.
    Si tu n'y parviens pas LeForestier va te faire ça

  7. #7
    Membre confirmé Avatar de a.dequidt
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub test()
    Dim FL1 As Worksheet
    Dim FL2 As Worksheet
    Dim num_onglet As String
    num_onglet = Range("R26").Value
    Set FL1 = Workbooks("Tarifs_Automatisme.xls").Sheets(num_onglet)
    Set FL2 = Workbooks("Logiciel_offres_v9.xls").Worksheets(1)
    chemin = Range("L12").Value & "\"
    nomfichier = Tarifs_BLF_Automatisme.xls
    adresse = Range("B4").Value
    FL2.Cells(26, 2).Value = "=[" & chemin & NomFich & "]" & num_onglet & "!" & adresse
    End Sub

    Il me pointe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set FL1 = Workbooks("Tarifs_Automatisme.xls").Sheets(num_onglet)
    et me dit que l'indice n'appartient pas a la selection !
    Est ce parce que le fichier tarifs_automatisme est fermé?



    EDIT:

    Meme avec le fichier ouvert ça marche pas :s

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Alors tu as un problème dans le N° de ton fichier car je n'ai pas de problème avec ça
    Set FL1 = Workbooks("Classeur6.xls").Sheets(1)
    Si num_onglet est un string... Non ! Puisque num_onglet est un string (j'avais pas vu) utilise Worksheets(num_onglet) au lieu de Sheets(num_onglet)

Discussions similaires

  1. Lire dans des classeurs fermés Excel2007 xlsx et xlsm
    Par SilkyRoad dans le forum Contribuez
    Réponses: 0
    Dernier message: 26/08/2007, 15h59
  2. [VBA]comment utiliser des Variables avec Underscore ( _ )
    Par Oceliane dans le forum VBA Access
    Réponses: 4
    Dernier message: 12/04/2007, 17h02
  3. [vba-excel] ouvrir des classeurs excel
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/10/2006, 15h28
  4. recherche d'info dans des classeurs fermé
    Par gerald57 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/08/2006, 19h04
  5. [VBA-E] Ouverture des classeurs d'un dossiers
    Par Nicos77 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/03/2006, 17h48

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