créer une liste à partir d'une plage de cellules

  • Initiateur de la discussion Initiateur de la discussion kang
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

kang

XLDnaute Nouveau
Bonjour à tous !

La question est en rapport au document ci joint.

Je souhaite constituer une base de donnée dans laquelle une ligne représente une entité.
Chaque entités va être "annotée" avec un certain nombre de mots clés (variable en fonction des entités), notés dans des cases séparées à partir de la colonne E (voir doc ci-joint).

Je souhaiterais générer une liste non redondante des mots clé dans une nouvelle feuille.
Je souhaiterais que cette liste "s'agrandisse" toute seule au fur et à mesure que je remplirai ma base.

Pour info, cette liste servira à définir les mot clé pour en conserver la pertinence.

Merci d'avance pour votre réponse !
 

Pièces jointes

Re : créer une liste à partir d'une plage de cellules

Salut kang,

C'est un peu compliqué ton affaire puisqu'on retrouve le même mot clé dans différentes colonnes. A mon avis il faut une macro qui remet ensemble tous les mots clés de toutes les colonnes puis qui dédoublonne. Je ne peux pas grand chose dans ce domaine.
Sans macro je n'imagine qu'une solution semi manuelle : par MFC on peut faire que tout nouveau mot clé saisi dans la feuille labo et qui est absent de la feuille définitions apparaisse en rouge : il ne reste alors qu'à aller l'ajouter.

Cordialement
 

Pièces jointes

Dernière édition:
Re : créer une liste à partir d'une plage de cellules

Bonjour kang, Bonjour Dugenou,

Ou alors comme ça, dans le code de la feuille Labos :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Def, Ligne As Long
    If Target.Count = 1 Then
        If Target.Column > 4 Then
            If Application.CountIf(Sheets("Def Mots Clés").Range("A1:A" & Rows.Count), Target.Value) = 0 Then
                Def = Application.InputBox(prompt:="Définition du mot clé " & Target.Value, Title:="Nouveau mot clé", Type:=2)
                If Def = False Then Def = ""
                With Sheets("Def Mots Clés")
                    Ligne = .Range("A" & .Rows.Count).End(xlUp).Row + 1
                    .Range("A" & Ligne).Value = Target.Value
                    .Range("B" & Ligne).Value = Def
                End With
            End If
        End If
    End If
End Sub
 
Re : créer une liste à partir d'une plage de cellules

Bonjour Dugenou, tototiti2008,

Merci pour vos réponses.
Au pire, oui, je peux utiliser la MFC...

Tototiti2008 : merci beaucoup de ta réponse. Cependant,je n'y connais rien eb VBA et en code... Du coup, je sais pas vraiment quoi faire de ce néanmoins sympathique code proposé...
 
Re : créer une liste à partir d'une plage de cellules

Re bonjour à tous,

Merci tititoto ! ça marche au poil !

Kang : j'ai intégré la dans le fichier joint : il faut entrer la définition quand on saisi le nouveau mot clé.

A plus
 

Pièces jointes

Re : créer une liste à partir d'une plage de cellules

Re,

Clic droit sur la feuille Labos - Visualiser le code
tu colles l'ensemble du code proposé
tu fermes la fenêtre pour revenir à Excel

Puis pour tester, tu tapes un nouveau mot clé dans la feuille Labos
le fichier devra être enregistré en xlsm pour que la macro ne soit pas perdue
 
Re : créer une liste à partir d'une plage de cellules

Re,

Voici le code commenté
C'est une procédure évènementielle de la feuille
Worksheet_change se déclenche lorsque l'on a modifié le contenu d'une cellule de la feuille (saisie ou collage)

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Target représente la cellule ou la plage de cellule qui a été modifié
Dim Def, Ligne As Long
    If Target.Count = 1 Then 'S'il n'y a qu'une seule cellule de modifiée
        If Target.Column > 4 Then 'Si la colonne est E ou au-delà
            If Application.CountIf(Sheets("Def Mots Clés").Range("A1:A" & Rows.Count), Target.Value) = 0 Then
'Si la valeur qui vient d'être saisie n'existe pas dans la 1ère colonne de la feuille Def Mots Clés
                Def = Application.InputBox(prompt:="Définition du mot clé " & Target.Value, Title:="Nouveau mot clé", Type:=2)
'On demande à l'utilisateur de taper la définition du nouveau mot clé
                If Def = False Then Def = "" 'Si l'utilisateur clique sur Annuler, on considère une définition vide
                With Sheets("Def Mots Clés")
                    Ligne = .Range("A" & .Rows.Count).End(xlUp).Row + 1 'Numéro de la 1ère ligne vide de la feuille Def Mots Clés
                    .Range("A" & Ligne).Value = Target.Value 'On écrit le nouveau mot clé
                    .Range("B" & Ligne).Value = Def 'On écrit la définition associée dans la même ligne
                End With
            End If
        End If
    End If
End Sub
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour