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 :

Lancer macro sur deux classeurs ouverts [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Points : 69
    Points
    69
    Par défaut Lancer macro sur deux classeurs ouverts
    Bonjour à toutes et à tous,

    Voilà je bloque depuis quelques temps sur un truc qui pourtant doit être tout bête.
    Je souhaite à l'aide d'une UserForm saisir des données simultanément dans deux classeurs ouverts.
    Dans mon exemple ci-dessous, je rentre par exemple le nom-prénom dans la TextBox et je voudrais que la saisie se fasse dans la cellule D29 de mes deux classeurs.
    Voici le code, mais rien n'y fait, la saisie ne se fait que sur un classeur.
    Merci pour vos conseils.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub TextBox1_Change()
        Dim wbk As Workbook
        For Each wbk In Application.Workbooks
        [D29] = TextBox1
        Next wbk
    End Sub

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 942
    Points
    55 942
    Billets dans le blog
    131
    Par défaut
    Salut.

    C'est normal, la ligne 4 affecte la saisie à la cellule D29 de la feuille active. Or, ta boucle n'active pas de classeur.

    Perso, je modifierais cette ligne en utilisant la variable classeur et la feuille correspondante (pour autant que les feuilles à modifier aient le même nom dans chaque classeur. A toi d'adapter à ton cas particulier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub TextBox1_Change()
        Dim wbk As Workbook
        For Each wbk In Application.Workbooks
        wbk.worksheets("...").range("D29").value = TextBox1.value
        Next wbk
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Points : 69
    Points
    69
    Par défaut
    Bonsoir Pierre,
    Merci ça fonctionne impec!
    Par contre j'ai le classeur Personnal qui s'ouvre de manière automatique et qui m'empêche (si je ne renomme pas l'onglet identiquement à celui de mes deux classeurs) de lancer la macro. Certainement une histoire de rangement... J'avoue que j'en ai foutu un peu partout avec mes essais à droite à gauche...

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 942
    Points
    55 942
    Billets dans le blog
    131
    Par défaut
    Il faut inhiber le traitement lorsque tu es sur le classeur de macros personnelles (en adaptant au nom de ton classeur de macros perso) puisque For Each wbk... passe sur chaque classeur ouvert.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub TextBox1_Change()
        Dim wbk As Workbook
        For Each wbk In Application.Workbooks
        If StrComp(wbk.Name, "personal.xlsb", vbTextCompare) <> 0 Then
          wbk.Worksheets("...").Range("D29").Value = TextBox1.Value
        End If
        Next wbk
    End Sub
    Mieux. Tu pourrais renommer les ThisWorkbook des classeurs concernés de façon à ne travailler que sur ceux-là même si d'autres sont ouverts et utiliser par exemple le code suivant (qui ne traitera que les deux classeurs ayant les codename souhaités)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub TextBox1_Change()
        Dim wbk As Workbook
        For Each wbk In Application.Workbooks
          Select Case wbk.CodeName
            Case "wbUserForms", "wbTest"
            wbk.Worksheets("...").Range("D29").Value = TextBox1.Value
          End Select
        Next wbk
    End Sub

    Nom : 2018-05-15_221810.png
Affichages : 209
Taille : 41,7 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Points : 69
    Points
    69
    Par défaut
    Merci Pierre !
    Je vais opter pour ta première proposition étant donné que les noms de fichiers seront tous différents (Nom-Prénom + date d'entretien).
    Après il doit y avoir moyen d'insérer une variable nomprénom... mais je verrai éventuellement plus tard, c'est déjà très bien comme cela pour le moment.
    Je vais pouvoir construire mon formulaire et peut-être ouvrir une nouvelle discussion car mon projet est assez hard... du moins pour moi
    Un grand

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

Discussions similaires

  1. [XL-2003] evenement sur un classeur ouvert par une macro
    Par cecyl dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/08/2010, 11h39
  2. [XL-2007] Aplliquer une macro sur deux feuil d'un classeur
    Par anasleco dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/02/2010, 19h25
  3. [VBA-E] travailler sur deux classeurs
    Par argv666 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/09/2006, 10h40
  4. [VBA-E]:copier entre deux tableaux sur deux classeurs
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 39
    Dernier message: 28/06/2006, 15h39
  5. [VBA-E]travail sur deux classeurs excel
    Par richou dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/04/2006, 10h59

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