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 :

Fusionner cellules VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    408
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 408
    Par défaut Fusionner cellules VBA
    Bonjour à tous,

    Je créé plusieurs fichiers xls (une dizaine environ), qui contiennent des tableaux de bords sur plusieurs feuilles xls.
    Je souhaiterais (juste apres la creation) fusionner certaines cellules de mes fichiers xls.
    Comment pourrais je faire pour fusionner ces cellules, en sachant que ces fichiers xls sont produits de façon journaliere et donc je ne peux pas créer de macro pour chacun de ces fichiers ...
    Serait il possible d'avoir un programme VBS ou VBA que je lance en tache planifiée qui se chargera de faire ces petites modif ?

    Merci à ceux qui pourront m'aider.

  2. #2
    Membre confirmé Avatar de catsur
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Par défaut
    Ba en tâche planifié je ne sais pas...

    Par contre, voici la commande pour fusionner des cellules :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sheets(5).Range("A4", "G4").MergeCells = True
    Pour le reste je ne sais pas, je suis comme toi, pour les liens entre les fichiers je ne sais pas faire, j'ai d'ailleurs posté à ce sujet. Il y a peut-être des solutions plus simples que celle que tu proposes.

    Il me viens d'ailleurs une idée :

    Pourquoi ne pas faire un modèle, c'est à dire que tu fais une bonne fois pour toutes la feuille correcte à la main, tu l'enregistres en modèle, puis tu ouvres le modèle à chaque fois que tu crées un nouveau fichier?

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    408
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 408
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sheets(5).Range("A4", "G4").MergeCells = True
    Bonjour, merci pour ta réponse.
    Seulement ça c'est une commande pour une seule "sheet", moi j'aimerais avoir la commande qui permet de faire la modif sur un workbook complet (parce que j'ai plusieurs workbook differents qui contiennent plusieurs "sheet").

    Merci.

  4. #4
    Membre confirmé Avatar de catsur
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Par défaut
    Dans ce cas là tu mets une variable "num_sheets" à la place du 5 de "sheets", et tu fais une boucle de 1 jusqu'à ton nombre de "sheets"

  5. #5
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    408
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 408
    Par défaut
    => Ok pour ça.
    Mais tu peux faire uniquement si tu fais les modif dans ton workbook.
    Si maintenant j'ai plusieurs workbook... Y a t il une commande permettant de nommer un workbook sur lequel on souhaiterait faire ces modifs ?
    Exemple :
    J'ai 2 fichiers .xls (contenant 5 feuilles)
    => je dois appliquer la macro sur 3 feuilles de chaque fichier xls ?

    Je souhaiterais créer un troisieme fichier xls dans lequel je mettrais une macro qui executera les fusions des cellules des 3 feuilles des 2 fichiers xls.
    Cela donnera quoi ?

  6. #6
    Membre confirmé Avatar de catsur
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Par défaut
    Je ne sais pas.

    Je ne sais pas faire de macro pour les liens entre les fichiers. Je viens d'ailleurs d'aller poster à ce sujet, tu peux aller voir

    Bon courage, et désolé de n'avoir pu t'aider jusqu'au bout...

    catsur

  7. #7
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    Bonjour,

    Et en passant par un template?

    Cela ne serait pas mieux?

  8. #8
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    408
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 408
    Par défaut
    Je pourrais avoir un exemple svp ?
    Merci.

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Bonjour

    regarde dans ce post recherche d'un chiffre (#3) tu y trouveras un code qui te donne le moyen de boucler dans les classeurs et dans les feuilles et en arrangeant un peu le tout tu devrait trouver ton bonheur.

    regarde ce que tu peux faire et reviens nous dire ou tu en est.

  10. #10
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    Si tu inclus la macro dans le template,elle y restera lorsque tu créeras un nouveaux fichier basé sur ce template.

    qui plus est, si ce n'est que pour avoir des cllules mergées
    ben tu crées les cellules mergée dans le template et là, même plus besoin de macros.

    C'est d'ailleurs ce que disais catsur dans son post

    modele=template

  11. #11
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    408
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 408
    Par défaut
    Merci mais la je ne vois pas du tout comment fonctionne un template...
    mais je souligne que j'ai plusieurs fichiers xls, avec des tableaux de tailles differentes et donc les cellules à merger sont differentes en fonctions du fichiers xls... Enfin je ne vois pas comment faire avec un template ?

  12. #12
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Autant pour moi le code du lien que je t'ai donné n'est pas assez précis

    ce que je voulais t'expliquer c'est que si tes fichiers excels sont dans le même répertoire tu peux boucler sur ces fichier pour les ouvrir faire tes modifications puis passer au suivant.

    je recherche le post et je te mettrais le lien.

  13. #13
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour tlm,

    Une petite question pour faire avancer le schmilblick.
    Si les cellules à fusionner sont différentes d'un classeur à un autre, comment comptes-tu spécifier, dans ta macro, les cellules concernées ?

  14. #14
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    408
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 408
    Par défaut
    Oui j'ai deux WorBook et chacun d'entre eux contient plusieurs sheet.
    Les cellules à fusionner (sont à la meme ligne, la 1re) mais elle peuvent avoir differentes amplitudes.
    J'avais pour idée de referencer tous les cas, et de faire un programme VBA dans un nouveau workbook. Ce programme devrait faire ces modifications sur toutes les sheet des deux workbook.
    C'est réaliste, faisable ??
    Mais je ne trouve pas, le code qui permet de travailler sur un workbook et sheet précis... car la commande de merge je la connais.
    Voila mon pb..

    Merci pour votre aide.

  15. #15
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Un exemple si c'est le classeur toto.xls et que celui-ci est ouvert également
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("toto.xls").Sheets("Nom de la feuille").range("A1:D1").MergeCells = True
    Pour exécuter la fusion de ces cellules sur toutes les feuilles du classeur toto.xls
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    Dim i As Byte
     
    With Workbooks("toto.xls")
        For i = 1 To .Sheets.Count
            .Sheets(i).Range("A1:D1").MergeCells = True
        Next
    End With
    End Sub

  16. #16
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    408
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 408
    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
    'evenement sur ouverture car je souhaite executer une tache planifiée
     
    Private Sub document_open() 
     
    'selection d'un workbook sur lequel je souhaiterais faire des modifs
    With Workbook("fichier.xls").Activate
         Sheets("sheet3").Select
         Set Maplage = Range("E2:F2")
    Maplage.MergeCells = True
    End With
     
    End Sub
    Voici un bout de mon code, mais ça ne fonctionne pas...
    J'ai mis ce code dans un fichier xls qui executera cette macro sur ouverture...

  17. #17
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Workbook_open() 
     
    'selection d'un workbook sur lequel je souhaiterais faire des modifs
    Workbook("fichier.xls").Sheets("sheet3").Range("E2:F2").MergeCells = True
    End Sub
    Remarque : il faut que fichier.xls soit également ouvert, je t'avais répondu juste avant mais nos messages se sont croisés

  18. #18
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    408
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 408
    Par défaut
    Ok merci,
    mais cette macro je souhaiterais l'executer (tous les matins par ex)
    donc je mets la macro dans un fichier xls.
    J'ai mis l'évenement document_open() mais ça ne l'execute pas en ouvrant ce fichier ... ?
    qu'est ce qui cloche ?

    Merci pour votre aide.

  19. #19
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Plusieurs choses :

    L'évènement n'est pas document_open() mais Workbook_Open et le code est à placer dans l'objet ThisWorkbook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
    '...procédure
    End Sub
    Je suppose que ton niveau de sécurité est mis sur "moyen" et non sur "bas" ce qui est fortement déconseillé. Ce qui implique qu'à l'ouverture du classeur, la macro ne s'exécutera pas tant que tu n'auras pas répondu à la question "Voulez-vous activer les macros ?", on ne peut donc pas être un full automatique. A moins de certifier les procédures par une signature électronique mais cette certification ne sera valable que sur le pc sur laquelle elle a été effectuée.

    Ensuite il faudrait insérer un bout de code dans la procédure qui vérifiera si le classeur toto.xls est déjà ouvert, sinon l'ouvrir, exécuter la procédure, sauvegarder et refermer le classeur.

  20. #20
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    408
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 408
    Par défaut
    Super ça fonctionne !!

    Ensuite il faudrait insérer un bout de code dans la procédure qui vérifiera si le classeur toto.xls est déjà ouvert, sinon l'ouvrir, exécuter la procédure, sauvegarder et refermer le classeur.
    quelle est la fonction qui permet d'ouvrir un fichier (en mode invisible ?) svp ?

    Merci beaucoup... Vba c'était loin derriere moi...

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

Discussions similaires

  1. [VB.NET] SourceGrid et Fusionner cellules
    Par Bourbaky dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/10/2015, 02h52
  2. [XL-2010] Fusionner cellules VBA sous la fonction IF
    Par awa123 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/08/2014, 22h28
  3. Pointer sur une cellule fusionnée en Vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 56
    Dernier message: 03/02/2009, 11h48
  4. [VBA W] : fusionner cellules vides dans tableau
    Par camzo dans le forum VBA Word
    Réponses: 6
    Dernier message: 26/09/2007, 17h01
  5. [XSL] N'afficher qu'une fois une valeur + fusionner cellule
    Par DidRocks dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 05/09/2005, 09h22

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