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 :

Remplacer la feuil8 d'un classeur B par la feuil8 d'un classeur A, classeur ouvert ou fermé sur un réseau [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Par défaut Remplacer la feuil8 d'un classeur B par la feuil8 d'un classeur A, classeur ouvert ou fermé sur un réseau
    Bonjour à tous,

    je voudrais remplacer la feuil8 d'un classeur B par la feuil8 d'un classeur A, classeur ouvert ou fermé sur un réseau mais dans un même répertoire.
    Cette feuil8 comporte des zones nommées et me sert de base pour alimenter deux Combobox.
    Je vous joint deux classeurs test
    Merci par avance pour vos aides

    Bien cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    le plus simple est de recopier ta feuille de A dans la feuille de B

    ça ne casse pas les plages nommées

    si A est fermé, tu peut effectuer son ouverture, copie des cellules, et ensuite fermeture du fichier
    avec un ScreenUpDating à False, c'est transparent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub remplacement()
     
    With Workbooks("classeur B.xls").Worksheets("Base")
        .Cells.ClearContents
        Workbooks("classeur A.xls").Worksheets("Base").Cells.Copy .Range("A1")
    End With
     
    End Sub

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Par défaut
    Merci joe.levrai,

    Mon soucis est que le classeur b peut être utilisé par une personne sur le réseau ou pas !

    de mon côté j'avais commencé à écrire mais ca plante lors de la copie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
         ' Microsoft ActiveX DataObject doit être coché
        Set cnn = New ADODB.Connection
        répertoire = ThisWorkbook.Path & "\"
        Fichier = "classeur A.xls"
        fichier1 = "classeur B.xls"
        cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};ReadOnly=1;DBQ=" & répertoire & Fichier1 ' Fichier .xls
    Fichier.Range("A1:O5000").copy Destination:=fichier1.Range("A1")
    rs.Close
        cnn.Close
        Set rs = Nothing
        Set cnn = Nothing

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Si B est déjà ouvert en lecture écriture par quelqu'un d'autre, tu ne peux pas en modifier le contenu, quelque soit la méthode que tu utiliseras.
    (et ne pense même pas aux classeurs partagés ... qui sont des hérésies pour VBA)

    tu pourrais dupliquer B pour faire la modification, et supprimer l'ancien B quand il est libéré ...mais c'est usine à gaz

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Par défaut
    En fait ça ne modifie pas la feuille qu'il utilise en écriture mais une base qui sert à alimenter une combobox .
    J'ai fait des tests sur un réseau et j'ai pu écrire sans soucis dans une autre feuille que l'utilisateur n'utilisais pas.
    J'ai choisi de passer par ADODB.Connection pour ecrire si fichier ouvert ou fermé

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    je suis désolé, mais il va falloir mieux ré expliquer ton problème, je ne comprend plus rien

    Tu as un classeur A et un classeur B
    chacun contient une feuille "Base"
    dans le classeur B, tu as un Userform dont un combobox est rempli via rowsource d'une plage nommée de B

    tu veux pouvoir actualiser les données de "Base" du fichier B en y injectant les données de "Base" de fichier A


    c'est bien ça ?

    donc l'utilisateur qui utilise le userform est bien sur le fichier B ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/01/2007, 14h05
  2. Réponses: 5
    Dernier message: 26/11/2006, 17h32
  3. Réponses: 3
    Dernier message: 11/12/2005, 11h15
  4. Réponses: 1
    Dernier message: 09/12/2005, 23h34
  5. Réponses: 2
    Dernier message: 29/11/2005, 14h17

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