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 :

Lister des mots dans 2 colonnes sur excel [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Par défaut Lister des mots dans 2 colonnes sur excel
    Bonjour à tous,

    Je galère depuis quelque jours avec cette idée sur Excel. Je voudrais lister une colonne contenant des mots et des cases vides, sans prendre en compte les cases vides. J'ai trouvé la macro suivante. Elle fait très bien le boulot.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub LISTER()
    derligne = Range("A70").End(xlUp).Row
    [D4] = ""
    For i = 1 To derligne
    If Cells(i, 1).Value <> "" Then
    [D4] = [D4] & Cells(i, 1).Value & ", "
    End If
    Next i
    ' ci-dessous pour ôter la dernière virgule
    [D4] = Left([D4], Len([D4]) - 2)
    End Sub
    J'ai deux colonnes A et B : la macro liste la colonne A. La colonne B contient des sous parties de la colonne A. J'aurai voulu que lorsqu'elle rencontre un certain mot, elle commence à lister entre parenthèses les mots de la colonne B en face de la cellule contenant ce mot (col A) et ce jusqu'à la rencontre d'une cellule vide.

    Ma macro va lister comme ça minimes, adulte, cadets, seniors mais j'aurai voulu qu'elle fasse : minimes (Alexis, Pierre, Jean), adultes, cadets (Louis, Adrien). J'espère que je suis compréhensible

    minime Alexis
    adultes Pierre
    Jean
    cadets Louis
    Adrien
    seniors

    Merci d'avance pour votre aide
    malakou

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'espère que je suis compréhensible
    Absolument pas, parce-qu'au vu de ton image pour moi Pierre est Adulte et toi tu écris Minime

    Alors pourquoi des cellules vides ?
    Personnellement je remplirais les cellules et j'utiliserais la mise en forme conditionnelle pour masquer les cellules dont la valeur serait identique à celle du dessus.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Par défaut
    Bonjour,

    Merci pour ta réponse et désolé si je ne suis pas clair.
    Alors le format du tableau n'est pas modifiable même si sa logique est discutable il faut le voir comme ça :

    Nom : minime.PNG
Affichages : 377
Taille : 5,1 Ko

    Ce tableau est créé à la base pour avoir plus de visibilité mais pas pour être utilisé comme tu l'entend.

    En espérant être plus clair

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    c'est juste une question de simple logique et accessible à un débutant !

    Parmi les cellules de la plage utilisée (cf aide VBA interne de UsedRange)
    tester les cellules de la première colonne et aussi celles de la seconde.

    Coucher déjà cela sur papier et une fois la logique aboutie, le code en découlera facilement …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Par défaut
    Bonjour et merci pour ta réponse.

    En essayant de tatonner un peu j'ai réalisé ça. Je dois avoir écrit des incohérences mais j'ai du mal à me rendre compte.

    J'arrive à obtenir ça :
    ()Alexis, Pierre, Jean, ))Louis, Adrien, ))))))))))minimes, adultes, (Jean, ))Louis, Adrien, ))))))))))())Louis, Adrien, ))))))))))()Louis, Adrien, ))))))))))cadets, (Adrien, ))))))))))())))))))))seniors, ())))))))()))))))())))))()))))())))()))())

    Je ne sais pas trop comment stopper la boucle quand il arrive sur une cellule vide.
    Merci d'avance

    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
    Sub LISTER()
    derligne = Range("A70").End(xlUp).Row
     
        Dim sourceCol As Integer, rowCount As Integer, currentRow As Integer
        Dim currentRowValue As String
        sourceCol = 2
        rowCount = Cells(Rows.Count, sourceCol).End(xlUp).Row
     
    [D4] = ""
    For i = 1 To derligne
            If Cells(i, 1).Value <> "" Then
                If Cells(i, 1).Value <> "minimes" Or Cells(i, 1).Value <> "cadets" Then [D4] = [D4] & Cells(i, 1).Value & ", "
                Else
                    [D4] = [D4] & Cells(i, 1) & "("
                For j = i To rowCount
                    If Cells(j, 2).Value <> "" Then
                    [D4] = [D4] & Cells(j, 2) & ", "
                    Else
                    [D4] = [D4] & "), "
                    [D4] = Left([D4], Len([D4]) - 2)
                    End If
                Next j
                End If
    Next i
    [D4] = Left([D4], Len([D4]) - 2)
    End Sub

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Comme c'est une boucle bornée elle finit de facto toute seule !

    Ligne de code n°2 non fiable :   imagine si tu retires seniors de ton exemple !

    Si le résultat attendu est bien minime (Alexis), adultes (Pierre, Jean), cadets (Louis, Adrien), seniors alors
    il suffit déjà de commencer la logique sur la colonne B …

    Réalisable en une quinzaine de lignes de code pour peu qu'avant de commencer à l'écrire
    une réflexion soit déjà menée comme il se doit, le papier cela aide ! …

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

Discussions similaires

  1. changer la valeur des données dans une colonne excel et les trier
    Par thewind1 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/01/2011, 23h35
  2. Suppression des liens dans 38 cellules sur 36 colonnes
    Par La Zélie dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 25/05/2008, 02h20
  3. Réponses: 9
    Dernier message: 04/04/2007, 12h16
  4. [EXCEL] Mise en évidence des doublons dans une colonne
    Par dacid dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 30/10/2006, 20h14

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