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 :

Mettre le texte de plusieur cellule dans une seule [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Secrétaire
    Inscrit en
    Avril 2020
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Secrétaire
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 44
    Points : 36
    Points
    36
    Par défaut Mettre le texte de plusieur cellule dans une seule
    Bonjour,

    J'aimerai savoir s'il est possible de simplifier ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(1, 2).Value = Cells(1, 1).Value & Chr(10) & Cells(2, 1).Value & Cells(3, 1).Value & Chr(10) & Cells(4, 1).Value
    Mon problème est que l'ensemble des informations vont de la ligne 1 à 13200 dans la colonne A
    cela représente les nom, prénom adresse, code postal et ville de 3000 personnes
    et j'aimerai leur envoyer un courrier postal et donc faire un tableau de 3 colonnes sur 1000 lignes (que j'imprimerai sur des étiquettes autocollante...)
    le problème vient du fait qu'il n'y a pas le même nombre de ligne pour chaque personne.
    Dans la colonne B j'ai écrit une formule de condition que si la cellule de gauche commence par "M. " ou "MME" alors "x"
    Cela me donne le début et la fin des cellules que je dois prendre en compte pour fusionner leurs contenu dans mon tableau de 3 sur 1000.

    Je sais faire des boucles For Next mais du coup je dois mettre des IF selon le nombre de ligne par personne.

    Merci pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Progeric Voir le message
    Bonjour,

    Vous pourriez assez facilement recomposer les adresses à partir de la position des codes postaux, une adresse correspondant à l'intervalle entre deux codes + 1 ligne et un code postal correspondant à 5 chiffres.

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Progeric Voir le message
    J'aimerai savoir s'il est possible de simplifier ce code :
    Sans boucle, tu pourrais utiliser la fonction Excel JOINDRE.TEXTE dans VBA.
    Elle correspond exactement à ta demande.
    Lire ça : https://support.microsoft.com/fr-fr/...3-0e8fc845691c

    Pour utiliser une fonction Excel en VBA, tu as deux solutions :
    La méthode Evaluate https://docs.microsoft.com/fr-fr/off...ation.evaluate
    La propriété WorksheetFunction https://docs.microsoft.com/fr-fr/off...ksheetfunction

    Attention, dans les deux cas il faudra utiliser la version anglophone de la fonction.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Secrétaire
    Inscrit en
    Avril 2020
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Secrétaire
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 44
    Points : 36
    Points
    36
    Par défaut
    Bonjour,

    Voici le code que j'utilise, mais je suis sur qu'il peut être simplifier au niveau des boucles avec des commandes wdrarray (ou un truc comme ça)

    Merci pour votre aide
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Sub Macro2()
    a = 1
    b = 4
    For x = 1 To 13299
        If Cells(x, 2).Value = "x" Then
            If Cells(x + 4, 2).Value = "x" Then
                y = x + 3
                Cells(a, b).Value = Cells(x, 1).Value & Chr(10) & Cells(x + 1, 1).Value & Chr(10) & Cells(x + 2, 1).Value & Chr(10) & Cells(x + 3, 1).Value
                GoTo suite
            End If
            If Cells(x + 5, 2).Value = "x" Then
                y = x + 4
                Cells(a, b).Value = Cells(x, 1).Value & Chr(10) & Cells(x + 1, 1).Value & Chr(10) & Cells(x + 2, 1).Value & Chr(10) & Cells(x + 3, 1).Value & Chr(10) & Cells(x + 4, 1).Value
                GoTo suite
            End If
            If Cells(x + 6, 2).Value = "x" Then
                y = x + 5
                Cells(a, b).Value = Cells(x, 1).Value & Chr(10) & Cells(x + 1, 1).Value & Chr(10) & Cells(x + 2, 1).Value & Chr(10) & Cells(x + 3, 1).Value & Chr(10) & Cells(x + 4, 1).Value & Chr(10) & Cells(x + 5, 1).Value
                GoTo suite
            End If
            If Cells(x + 7, 2).Value = "x" Then
                y = x + 5
                Cells(a, b).Value = Cells(x, 1).Value & Chr(10) & Cells(x + 1, 1).Value & Chr(10) & Cells(x + 2, 1).Value & Chr(10) & Cells(x + 3, 1).Value & Chr(10) & Cells(x + 4, 1).Value & Chr(10) & Cells(x + 5, 1).Value & Chr(10) & Cells(x + 6, 1).Value
                GoTo suite
            End If
    suite:
            b = b + 1
            If b = 7 Then
                b = 4
                a = a + 1
            End If
        End If
    Next x
    End Sub

  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Dans un langage structuré, les Goto, c'est caca-beurk.

    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 Macro2()
    Dim a As Long, b As Long, x As Long, CC As Long, y As Long
    a = 1
    b = 4
    For x = 1 To 13299
        If Cells(x, 2).Value = "x" Then
            Cells(a, b).Value = Cells(x, 1).Value & Chr(10) & Cells(x + 1, 1).Value & Chr(10) & Cells(x + 2, 1).Value & Chr(10) & Cells(x + 3, 1).Value
            y = x + 2
            For CC = 4 To 6
                If Cells(x + CC, 2).Value <> "x" Then
                    Cells(a, b).Value = Cells(a, b).Value & Chr(10) & Cells(x + 1, CC).Value
                    y = x + CC - 1
                End If
            Next CC
            b = b + 1
            If b = 7 Then
                b = 4
                a = a + 1
            End If
        End If
    Next x
    End Sub
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

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

Discussions similaires

  1. [XL-MAC 2016] Grouper plusieurs cellules dans une seule
    Par SamSag dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/12/2017, 18h59
  2. [XL-2003] afficher le contenu de plusieurs cellule dans une seule
    Par Philippe76 dans le forum Excel
    Réponses: 4
    Dernier message: 02/04/2011, 19h00
  3. [AC-2007] Regrouper plusieurs cellules dans une seule
    Par J_help dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 20/07/2009, 18h47
  4. Mettre le contenu de plusieurs lignes dans une seule case
    Par bellamouna dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 09/12/2008, 12h11
  5. Réponses: 3
    Dernier message: 20/02/2008, 17h13

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