Fusion de cellules automatiques dans un tableau

Bonjour,

Ca fait un bout de temps maintenant que je n'ai pas posé de question ici, mais je me heurte à un problème.

Je suis en train de réaliser un fichier permettant de choisir les noms de personnes qui seront amenées à travailler sur divers projets.

Réaliser une liste déroulante (LISTE) avec tous les noms des participants qui s'affiche en cliquant sur une cellule (CELLULE de la colonne 1) : OK

Permettre de choisir plusieurs participants : OK

Insérer les valeurs stockées par LISTE dans CELLULE : OK

Maintenant j'aimerais que si on sélectionne plusieurs personnes, une ligne s'ajoute automatiquement en dessous de CELLULE de manière à mettre un nom par cellule.

J'ai donc réussi à insérer une ligne, et faire en sorte que les noms s'insèrent dans les cellules adéquates (je vous mets un exemple de test que j'ai réalisé avec un fichier de l'insee)

Maintenant, j'aimerai fusionner les lignes des premières colonnes qui ne change pas, quelque soit le nombre de d'éléments sélectionnés dans la liste.

Mon but étant de fusionner les cellules :

A15:A18

B15:B18

...

G15:G18

capture

Je travaille ici avec un tableau qui se nomme Tableau1.

Est-ce que quelqu'un ici aurait une petite idée de la procédure à faire ?

10ensemble.xlsm (42.74 Ko)

Bonjour

Maintenant j'aimerais que si on sélectionne plusieurs personnes, une ligne s'ajoute automatiquement en dessous de CELLULE de manière à mettre un nom par cellule.

Vous cliquez en H9 cela vous affiche la liste des participants
Vous en choisissez 4, vous voulez ajoutez ces 4 lignes à partir de la ligne 29 ou en dessous de la ligne 9 ?

Autre question : est-ce normal que si vous cliquez en dehors du tableau l'USF s'affiche ?


Edit : lorsque je clique sur une cellule qui possède déjà un participants, est ce l'on doit modifier cette cellule avec le 1er participants sélectionné dans l'USF

Bonjour Dan,

si je clique sur la cellule H9 et que je sélectionne 4 participants, je veux que 3 lignes s'ajoute de la ligne 10 à 12.

Si l'userform s'affiche quand on clique sur les cellules de la colonne H en dessous du tableau ce n'est pas très grave.

C'est une question que je voulais me poser plus tard, mais effectivement, j'aimerai que si on clique sur une cellule où il y a déjà du monde, les personnes soient encore sélectionnées quand l'userform va se ré-ouvrir.

Si l'userform s'affiche quand on clique sur les cellules de la colonne H en dessous du tableau ce n'est pas très grave.

Si cela ne doit pas se faire, je vous donne le code à mettre. Raison de ma question

si je clique sur la cellule H9 et que je sélectionne 4 participants, je veux que 3 lignes s'ajoute de la ligne 10 à 12.

et on doit ajouter les noms sélectionnés ?

C'est une question que je voulais me poser plus tard, mais effectivement, j'aimerai que si on clique sur une cellule où il y a déjà du monde, les personnes soient encore sélectionnées quand l'userform va se ré-ouvrir.

Si je comprends bien, si je clique sur Gaudeloupe, ce participants devra être sélectionné par défait dans la listbox à l'ouverture. Juste ?

Si cela ne doit pas se faire, je vous donne le code à mettre. Raison de ma question

Dans ce cas oui ça peut être pas mal. Merci

Exactement, on doit ajouter les noms sélectionnés, comme dans l'image que j'ai mis dans mon premier message. C'est ce que fais le code pour l'instant.

Oui c'est exactement ça. le participant déjà dans la cellule devra être sélectionné par défaut dans la liste si on clique dessus

1. Remplacez le code dans la feuille Régions par ceci

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, ListObjects(1).ListColumns(8).DataBodyRange) Is Nothing Then
    lig_cellule = Target.Row
    UserForm1.Show
End If
End Sub

2. Remplacez le code Initialize dans l'USF par celui ci-dessous

Private Sub UserForm_Initialize()
Dim cel As Range
Dim s As Integer

With Sheets("Régions")
    For Each cel In .ListObjects("Tableau1").ListColumns(2).DataBodyRange
        If cel <> vbNullString Then
            With ListBox1
                .AddItem 
                .List(.ListCount - 1) = cel.Value ' ajoute les noms des gens en colonne 1
            End With
            If .Cells(lig_cellule, 8) = cel.Value Then s = ListBox1.ListCount - 1
        End If
    Next cel
End With
With ListBox1
    .MultiSelect = fmMultiSelectMulti
    If s > 0 Then .Selected(s) = True
End With
End Sub

Faites un test sur ces deux codes.

Après je vous donnerai le code de validation mais je dois savoir si vous devez ajouter les participants sélectionnés dans une cellule ou pas et si oui, dans quelle colonne.
Pour votre question de fusion, VBA n'aime pas les fusions donc absolument à éviter encore plus avec les tableaux structurés

Edit : Attention j'ai modifié une ligne dans le deuxième code. --> If s > 0 ....

Bonjour,

Je viens de tester le fichier avec les deux modifications de code. Cependant, il y a un soucis car les lignes supplémentaires s'incrémente en début de tableau, et non à la suite de la ligne où la cellule est sélectionnée.

Il faudrait que les participants sélectionnés (ici les régions) apparaissent dans la cellule H(i) sélectionnée et à la suite de cette dernière H(i+1) ... en fonction du nombre de participant sélectionné.

AH ... et est-ce qu'il y a un moyen de mettre en forme les cellules de la même manière que si elles étaient fusionnées.

Bonjour

Je viens de tester le fichier avec les deux modifications de code. Cependant, il y a un soucis car les lignes supplémentaires s'incrémente en début de tableau, et non à la suite de la ligne où la cellule est sélectionnée.

Bah non. Si on parle de l"action suite au click sur le bouton Valider, les lignes s'ajoutent à la suite de la cellule cliquée. C'est le cas dans le fichier que vous avez posté.

Il faudrait que les participants sélectionnés (ici les régions) apparaissent dans la cellule H(i) sélectionnée et à la suite de cette dernière H(i+1) ... en fonction du nombre de participant sélectionné.

AH ... et est-ce qu'il y a un moyen de mettre en forme les cellules de la même manière que si elles étaient fusionnées.

Expliquez ce que vous voulez au final. On a plusieurs possibilités :
- soit on ajoute les participants sur chaque ligne ajoutée en H. Là vous auriez plusieurs fois le même nom en colonne B
- soit on ajoute les nouveaux participants sur la ligne cliquée. Inconvénient c'est que si vous avez deux participants que vous voulez en rajouter un nouveau, la listbox ne va pas mentionner les deux participants qui sont déjà mentionnés.

La solution 1 est préférable je pense mais à analyser car actuellement dans votre fichier vous n'avez qu'un seul participant en H dans chaque ligne.

Rechercher des sujets similaires à "fusion automatiques tableau"