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 :

Fusion de cellules dans une boucle [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Avril 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Avril 2023
    Messages : 3
    Par défaut Fusion de cellules dans une boucle
    Bonjour

    J'ai une boucle qui vérifie le nombre de caractère dans une cellule, si cela excède, le contenu est coupé et inséré dans une cellule créé.
    On peut avoir 2, 3, 4 cellules crées.

    Cette boucle tourne sur la colonne B, j'ai rajouté la fonction Merge dans ma boucle mais cela ne fonctionne pas (cela efface des données) ; juste avant le End If.
    J'aimerais bien aussi que la colonne A soit fusionné d'après le nombre de ligne rajouté.

    Merci pour votre aide

    Voici le code :
    'Découpage des cellules ayant trop de texte dans une cellule
    For Each cell In Range("b1:b" & [b65000].End(xlUp).Row + 55)
    If Len(cell) > 885 Then
    'on recherche a l'aide de cette boucle l'espace se trouvant avant la position 900
    For x = 1 To 30
    If Mid(cell, 885 - x, 1) = " " Then Exit For
    Next x

    cell.Offset(1, 0).EntireRow.Insert
    cell.Offset(1, 0) = Right(cell, Len(cell) - 885 + x)
    cell.Value = Left(cell.Value, 885 - x)
    Range(cell.Offset(1, 0), cell.Offset(0, 0)).Merge
    End If
    Next cell

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour,
    J'ai ajouté une boucle pour compter le nombre de cellules créées dans la colonne B pour chaque cellule et une autre pour fusionner les cellules correspondantes dans la colonne A.

    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
    For Each cell In Range("B1:B" & [B65000].End(xlUp).Row + 55)
        If Len(cell) > 885 Then
            'on recherche a l'aide de cette boucle l'espace se trouvant avant la position 900
            For x = 1 To 30
                If Mid(cell, 885 - x, 1) = " " Then Exit For
            Next x
     
            cell.Offset(1, 0).EntireRow.Insert
            cell.Offset(1, 0) = Right(cell, Len(cell) - 885 + x)
            cell.Value = Left(cell.Value, 885 - x)
            Range(cell.Offset(1, 0), cell.Offset(0, 0)).Merge
     
            'compter le nombre de cellules créées
            Dim nbCellules As Integer
            nbCellules = 1
            Do While Len(cell.Offset(nbCellules, 0)) > 0
                nbCellules = nbCellules + 1
            Loop
     
            'fusionner les cellules correspondantes dans la colonne A
            Range(cell.Offset(0, -1), cell.Offset(nbCellules - 1, -1)).Merge
        End If
    Next cell

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Avril 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Avril 2023
    Messages : 3
    Par défaut
    Merci @franc pour ce retour rapide

    Ok pour la fusion colonne A mais avant de tester j'ai mon problème de suppression d'info de la ligne 11 (Range(cell.Offset(1, 0), cell.Offset(0, 0)).Merge))

    Je ne comprends pas pourquoi cela m'efface des données.

    Merci

  4. #4
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour,

    si j'ai bien suivi l'idée est de découper une chaine trop longue en autant que sous-chaine que nécessaires, de mettre chaque sous chaine dans des celules différentes les unes en dessous des autres, puis de fusionner les cellules.

    Sauf que la fusion justement ne conserve les données que de la cellule supérieure. Donc le comportement décrit a l'air normal...

    Si tu tiens à la fusion, garde le même principe en laissant tout le texte dans la première cellule et en ajoutant un attribut "renvoyer à la ligne automatiquement.

    Si tu tiens au découpage, oublie la fusion et simule-la visuellement (encadrement, couleur de fond).

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Avril 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Avril 2023
    Messages : 3
    Par défaut
    Merci pour ce retour Tête de chat

    Un attribut "renvoyer à la ligne automatiquement" ne peut pas fonctionné car je suis en limite de caractère dans une cellule d'où le découpage sur plusieurs cellules.

    Je ne peux donc pas le faire. Merci pour cette éclaircissement.

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

Discussions similaires

  1. [XL-2010] Copie de valeur de cellule dans une boucle
    Par sam01 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/11/2014, 21h40
  2. Réponses: 6
    Dernier message: 18/02/2014, 20h39
  3. Chercher dans les valeurs d'une cellule dans une boucle For Next
    Par Runsh63 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 28/09/2011, 15h30
  4. Choisir un ensemble de cellule dans une boucle
    Par Garlim dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/05/2007, 15h02
  5. [VBA-E]connaitre l'adresse de cellule dans une boucle
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/02/2007, 23h13

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