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 en vb


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 Iloon
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Par défaut Fusionner en vb
    Bonjour,
    J'ai posté tout à l'heure une autre discussion à propos de la programmation en vb sur excel et je suis à nouveau bloquée ;

    En fait, maintenant, je souhaiterai que le code détecte une cellule vide dans une colonne donnée et qu'il la fusionne avec la cellule du dessus. Donc il y aurait une grande fusion jusqu'au résultat suivant (cellule pleine) où il ne se passerait rien puis à nouveau, dès qu'il trouverait une cellule vide, il faudrait la fusionner avec celle du dessus.

    J'ai également un problème, je ne sais pas à quel moment arreter mon code, vu qu'on ne peut pas lui demander d'arreter dès qu'il rencontre une case vide comme j'ai l'habitude de faire. Ce code est amené à etre utilisé sur plusieurs fichiers différents donc je ne peux pas en prévoir la longueur.

    Merci d'avance de vos réponses, j'essaie depuis tout à l'heure mais rien n'y fait !

    Iloon

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    bonjour,
    pour la fusion de cellules, je te recommande la fonction merge, dont tu peux avoir la syntaxe dans l'aide, ou par enregistrement de macro.

    Pour le fait de stopper la macro, tu dois pour cela utiliser un compteur en amont pour savoir quand tu arrives à la fin de la colonne, voir fonction
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  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 aurais intérêt à partir du "bas"
    En utilisant ce que dit jpcheck, tu pars à l'envers
    For NoLig = DernièreLigne to 1 step -1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        if Cells(NoLIg,NoCol) = "" then
             ... NoLIg et NoLig - 1 ... merge

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    SAlut
    En tenant compte de ton post precedent je ferais comme cela

    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
    Sub Calcul()
    Dim str As Variant
    Dim i As Long
    Dim cal As Long
    Dim j As Long
     
        i = 2
     
        While Worksheets(1).Range("A" & i).Value <> ""
            str = Worksheets(1).Range("A" & i).Value
            cal = 0
            j = 0
            While Worksheets(1).Range("A" & i + j).Value = str
                cal = cal + CLng(Worksheets(1).Range("C" & CStr(i + j)).Value)
                Worksheets(1).Range("D" & CStr(i), "D" & CStr(i + j)).Merge
                j = j + 1
            Wend
            Worksheets(1).Range("D" & i).Value = cal
            i = i + j
        Wend
     
    End Sub
    J'ai rajouté la ligne qui va bien, mais fais attention avec se bout de code, je le trouve un peu maladroit, deja les Worksheets(1), a mon avis mieux vaut mettre le nom du sheet plutot que son index, ca evite les erreurs.
    Attetion au transtypage aussi c'est a mon avis mieux de les mettre, meme si vba fait a sa sauce sans
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre confirmé Avatar de Iloon
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Par défaut
    Bonjour à tous, tout d'abord merci de vos réponses ;

    jpcheck, le compteur peut se baser sur une colonne différente de celle sur laquelle on travaille ?

    ouskel'n'or, je suis désolée, je n'arrive pas à utiliser ta fonction, je viens juste de débarquer sur la planète vb donc c'est assez dur d'adapter vos fonctions.

    Qwazerty, encore une fois, je suis désolée, je ne comprends pas bien ton code mais il apparait trois noms de colonnes et je pense que c'est pour cela que ça ne marche pas. Je voudrais fusionner les cellules d'une même colonne (celle du haut pleine avec celle d'en dessous, vide). On peut se référer à la colonne 2 pour repérer la fin du fichier, une cellule vide dans la colonne A indique que le fichier est terminé.
    De plus, je ne sais pas ce que sont ces codes "worksheet, sheet et transtypage", je suis toute nouvelle !

    Merci à vous

  6. #6
    Membre confirmé Avatar de Iloon
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Par défaut
    J'ai trouvé le code sur un autre forum, merci de votre aide quand même, ce code est un peu bidouillé mais si jamais ça intéresse quelqu'un, je le poste ici :


    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
     
    Sub Macro1() 
    Dim x As Integer, y As Integer, valC As Variant 
    x = 1 
    y = 1 
    Do While Range("A" & x).Value <> "" 
    valC = Range("C" & y).Value 
    Do While valC = "" And Range("A" & y).Value <> "" 
    y = y + 1 
    valC = Range("C" & y).Value 
    Loop 
    If x < y Then 
    Range("C" & x - 1 & ":C" & y - 1).Merge 
    Else 
    y = y + 1 
    End If 
    x = y 
     
    Loop 
    End Sub
    Merci à tous de votre aide, bonne continuation

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

Discussions similaires

  1. [XSL] Fusionner 2 xml
    Par argyronet dans le forum XSL/XSLT/XPATH
    Réponses: 23
    Dernier message: 27/04/2011, 16h58
  2. [VB.NET][ADO]Fusionner des dataTables
    Par neo.51 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 30/07/2005, 00h22
  3. fusionner le résultat de deux requetes
    Par sami_c dans le forum Requêtes
    Réponses: 2
    Dernier message: 29/05/2004, 09h56
  4. [] [Excel] Fusionner des cellules
    Par SamyD dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/12/2002, 18h37

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