XL 2021 Traitement automatique de cellules vides dans un tableau

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 !

Solution
Bonsoir,
1- Vous ouvrez l'éditeur VBA, vous allez dans Feuil1, vous copiez la macro puis dans votre fichier vous faites un Coller dans la feuille concernée.
Test4.gif


2- Il vous suffit de changer les indices de tableaux. Dans :
[Tableau15] = [Tableau1].Value
Tableau15 est le tableau de destination.
Tableau1 est le tableau source.

Donc par ex si vous voulez copier le Tableau 1 dans le Tableau 2 et faire le tri alors cela ferait :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("Tableau1[[#Headers],[Colonne1]]")) Is Nothing Then
        [Tableau2] = [Tableau1].Value
        [Tableau2].Resize([Tableau2].ListObject.ListColumns.Count).Sort key1:=[Tableau2].Item(1, 1), order1:=xlAscending, Header:=xlNo
    End If
End Sub

NB: Une macro...
Tout d'abord Bonjour Matlea, bonjour Gégé,
Un essai en PJ avec simplement :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("Tableau1[[#Headers],[Colonne1]]")) Is Nothing Then
        [Tableau15] = [Tableau1].Value
        [Tableau15].Resize([Tableau15].ListObject.ListColumns.Count).Sort key1:=[Tableau15].Item(1, 1), order1:=xlAscending, Header:=xlNo
    End If
End Sub
 

Pièces jointes

Tout d'abord Bonjour Matlea, bonjour Gégé,
Un essai en PJ avec simplement :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("Tableau1[[#Headers],[Colonne1]]")) Is Nothing Then
        [Tableau15] = [Tableau1].Value
        [Tableau15].Resize([Tableau15].ListObject.ListColumns.Count).Sort key1:=[Tableau15].Item(1, 1), order1:=xlAscending, Header:=xlNo
    End If
End Sub
Merci c'est exactement ce que je recherche. Mais comment faire pour transférer la procédure dans mon fichier de travail. Il n y a pas de macro visible dans le fichier que vous m'avez envoyé.
Faut il créer une macro avec le protocole qui est écrit ci-dessus ou bien faut il le coller ailleurs?
 
Merci c'est exactement ce que je recherche. Mais comment faire pour transférer la procédure dans mon fichier de travail. Il n y a pas de macro visible dans le fichier que vous m'avez envoyé.
Faut il créer une macro avec le protocole qui est écrit ci-dessus ou bien faut il le coller ailleurs?

Toujours pas de bonjour.
Vous le faites exprès.
Regardez dans la feuille, c'est une macro événementielle.
 
Pardon, bonsoir et joyeux Noël. Je ne suis pas très familier avec tout ceci et ne sais pas comment traiter une macro événementielle; Où se situe-t-elle dans la feuille et comment la transférer dans mon fichier?
D'avance merci et encore toutes mes excuses pour mon impolitesse
 
Pardon, bonsoir et joyeux Noël. Je ne suis pas très familier avec tout ceci et ne sais pas comment traiter une macro événementielle; Où se situe-t-elle dans la feuille et comment la transférer dans mon fichier?
D'avance merci et encore toutes mes excuses pour mon impolitesse

Rebonsoir
Encore une question.
Sera t il possible de traiter de la même façon sur la même feuille d autres tableaux semblables au tableau 1 (tableaux 2, 3, 4 etc)?
 
Bonsoir,
1- Vous ouvrez l'éditeur VBA, vous allez dans Feuil1, vous copiez la macro puis dans votre fichier vous faites un Coller dans la feuille concernée.
Test4.gif


2- Il vous suffit de changer les indices de tableaux. Dans :
[Tableau15] = [Tableau1].Value
Tableau15 est le tableau de destination.
Tableau1 est le tableau source.

Donc par ex si vous voulez copier le Tableau 1 dans le Tableau 2 et faire le tri alors cela ferait :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("Tableau1[[#Headers],[Colonne1]]")) Is Nothing Then
        [Tableau2] = [Tableau1].Value
        [Tableau2].Resize([Tableau2].ListObject.ListColumns.Count).Sort key1:=[Tableau2].Item(1, 1), order1:=xlAscending, Header:=xlNo
    End If
End Sub

NB: Une macro évènementielle doit obligatoirement se trouver dans la feuille et avec le même nom.
Si cette macro concerne toutes les feuilles alors elle doit se trouver dans ThisWorkBook.
 
Merci je regarde ça demain.
Bonne soirée

Bonsoir,
1- Vous ouvrez l'éditeur VBA, vous allez dans Feuil1, vous copiez la macro puis dans votre fichier vous faites un Coller dans la feuille concernée.
Regarde la pièce jointe 1209876

2- Il vous suffit de changer les indices de tableaux. Dans :
[Tableau15] = [Tableau1].Value
Tableau15 est le tableau de destination.
Tableau1 est le tableau source.

Donc par ex si vous voulez copier le Tableau 1 dans le Tableau 2 et faire le tri alors cela ferait :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("Tableau1[[#Headers],[Colonne1]]")) Is Nothing Then
        [Tableau2] = [Tableau1].Value
        [Tableau2].Resize([Tableau2].ListObject.ListColumns.Count).Sort key1:=[Tableau2].Item(1, 1), order1:=xlAscending, Header:=xlNo
    End If
End Sub

NB: Une macro évènementielle doit obligatoirement se trouver dans la feuille et avec le même nom.
Si cette macro concerne toutes les feuilles alors elle doit se trouver dans ThisWorkBook.
Bonjour,
C est parfait. Merci beaucoup et bonne journée.
 
bonjour à toutes & à tous, bonjour @sylvanu, @MATLEA
Ou puisque tu disposes d'Excel 2021, en supposant que tes données initiales soient en colonne B, sans macro avec la formule :
VB:
=LET(Lst;UNIQUE(B:B);TRIER(FILTRE(Lst;Lst<>"")))
Tu obtiens ta liste triée directement sans les cellules vides
voir feuil2 du fichier joint
À bientôt
 

Pièces jointes

Bonjour,
C est parfait. Merci beaucoup et bonne journée.

bonjour à toutes & à tous, bonjour @sylvanu, @MATLEA
Ou puisque tu disposes d'Excel 2021, en supposant que tes données initiales soient en colonne B, sans macro avec la formule :
VB:
=LET(Lst;UNIQUE(B:B);TRIER(FILTRE(Lst;Lst<>"")))
Tu obtiens ta liste triée directement sans les cellules vides
voir feuil2 du fichier joint
À bientôt
Bonjour et merci
Mais comment faut-il faire?
 
re
Mais comment faut-il faire?
Comme sur ce gif :
1735217145207.gif


Une fois la formule saisie, le résultat se met à jour à chaque changement dans la colonne B
Si tu veux accéder à l'ensemble du résultat, je te conseille de nommer la cellule qui contient la formule (ici E3 en la nommant par exemple Résultat) tu peux faire référence à Résultat# qui reprend la plage dynamique couverte par les résultats de la formule.
À bientôt
 
- 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

Réponses
11
Affichages
160
Réponses
4
Affichages
87
Réponses
9
Affichages
385
Réponses
6
Affichages
134
  • Question Question
Microsoft 365 TCD
Réponses
6
Affichages
284
Retour