Microsoft 365 Remplissage automatique d'une colonne

gregguadebois

XLDnaute Nouveau
Bonjour à tous,

J'ai besoin de votre aide.
Je recherche comment faire pour copier une colonne d'une autre feuille à partir d'un autre colonne sans doublons.

J'ai une colonne E (dans feuille "JANVIER") Composée de nom de client (avec doublons),
Je souhaite que lorsque je remplis cette colonne, automatiquement la colonne de la feuille "clients" se remplisse automatiquement sans doublons et si possible par ordre alphabétique.

Est-ce possible?

Cdlt
Greg.
 

oukthr

XLDnaute Nouveau
Bonjour à tous,

J'ai besoin de votre aide.
Je recherche comment faire pour copier une colonne d'une autre feuille à partir d'un autre colonne sans doublons.

J'ai une colonne E (dans feuille "JANVIER") Composée de nom de client (avec doublons),
Je souhaite que lorsque je remplis cette colonne, automatiquement la colonne de la feuille "clients" se remplisse automatiquement sans doublons et si possible par ordre alphabétique.

Est-ce possible?

Cdlt
Greg.
Bonjour, voir avec cette formule
Code:
=TRIER(UNIQUE(DECALER(JANVIER!$E$2;0;0;NBVAL(JANVIER!E:E);1));1;1;0)
 

Deadpool_CC

XLDnaute Accro
Bonsoir,

Si jamais le besoin est en macro que tu peux mettre après un bouton "MaJ liste client" tu peux essayer (j'ai pas tester puisque pas de fichier exemple.

La copie sans doublon :
VB:
Worksheets("ORIGINE").Range(Range("A1"), Range("A20000").End(xlUp)).AdvancedFilter _
        Action:=xlFilterCopy, _
        CopyToRange:=Worksheets("DESTINATION").Range("B1"), _
        Unique:=True

Et pour le Tri (avec Titre en ligne 1):
Code:
Worksheets("DESTINATION").Range(Range("B1"), Range("B20000").End(xlUp)).Sort _
            key1:=Range("B1"), order1:=xlAscending, Header:=xlYes
 

gregguadebois

XLDnaute Nouveau
Bonjour,

Ci joint un exemple.
mon but,
Copier les clients, dans la feuille clients, sans doublons et par ordre.
Et a partir de cette liste, je créer une liste de choix classique que j'utilise dans la page "janvier" dans la colonne client d'origine.
Ainsi cela ferait une liste en boucle auto-alimentée...

Cdlt
Greg
 

Pièces jointes

  • Essai - Copie.xlsx
    16.8 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir gregguadebois,
Un petit fichier test serait le bienvenu, cela éviterait inévitablement plusieurs allers retours.
C'est effectivement mieux. :)
En PJ un essai avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [E:E]) Is Nothing Then
         Application.ScreenUpdating = False
         DL = [E65500].End(xlUp).Row
         With Sheets("CLIENTS")
            .Range("A1:A" & DL) = Range("E1:E" & DL).Value                              ' Copie
            .Range("A1:A" & DL).RemoveDuplicates Columns:=1, Header:=xlYes              ' Supprime doublon
            .Range("A1:A" & DL).Sort key1:=.[A1], order1:=xlAscending, Header:=xlYes    ' Tri alpha
         End With
    End If
Fin:
End Sub
Quand on ajoute un client en page Janvier alors la liste de client est reconstituée en feuille Clients, sans doublon, et en ordre alpha.
A noter que si vous avez ensuite des feuilles Février, Mars ... il faut recopier cette macro dans chaque nouvelle feuille. ( ou alors dupliquer la feuille Janvier, la macro suivra )
 

Pièces jointes

  • Essai - Copie.xlsm
    24.3 KB · Affichages: 4

gregguadebois

XLDnaute Nouveau
Bonsoir gregguadebois,

C'est effectivement mieux. :)
En PJ un essai avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [E:E]) Is Nothing Then
         Application.ScreenUpdating = False
         DL = [E65500].End(xlUp).Row
         With Sheets("CLIENTS")
            .Range("A1:A" & DL) = Range("E1:E" & DL).Value                              ' Copie
            .Range("A1:A" & DL).RemoveDuplicates Columns:=1, Header:=xlYes              ' Supprime doublon
            .Range("A1:A" & DL).Sort key1:=.[A1], order1:=xlAscending, Header:=xlYes    ' Tri alpha
         End With
    End If
Fin:
End Sub
Quand on ajoute un client en page Janvier alors la liste de client est reconstituée en feuille Clients, sans doublon, et en ordre alpha.
A noter que si vous avez ensuite des feuilles Février, Mars ... il faut recopier cette macro dans chaque nouvelle feuille. ( ou alors dupliquer la feuille Janvier, la macro suivra )

Merci bcp,

cela fonctionne bien mais contre, comme je l'expliqué ci dessus, j'aurais souhaité retransormer cette colonne en liste, ce qui fonctionne mais pourvoir ajouter des nouveaux clients
Est-ce possible?

Cdlt
Greg
 

Pièces jointes

  • Essai - Copie 2.xlsm
    25 KB · Affichages: 1
  • test ajout.png
    test ajout.png
    15.9 KB · Affichages: 16

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Voir PJ.
La liste déroulante est constituée par :
VB:
=DECALER(Liste0;0;0;NB.SI(Liste;"<>"))
et il faut dans Alerte d'erreur décocher Quand les données non valides sont tapées.
Car quand vous entrez un nouveau client, évidemment cette donnée n'est pas dans la liste.
 

Pièces jointes

  • Essai - Copie 2.xlsm
    23.1 KB · Affichages: 5

gregguadebois

XLDnaute Nouveau
Re,
Voir PJ.
La liste déroulante est constituée par :
VB:
=DECALER(Liste0;0;0;NB.SI(Liste;"<>"))
et il faut dans Alerte d'erreur décocher Quand les données non valides sont tapées.
Car quand vous entrez un nouveau client, évidemment cette donnée n'est pas dans la liste.
Merci beaucoup
cela marche parfaitement comme je le souhaitais.
Merci et à bientôt.
Cdlt
Greg
 

gregguadebois

XLDnaute Nouveau
Re,
Voir PJ.
La liste déroulante est constituée par :
VB:
=DECALER(Liste0;0;0;NB.SI(Liste;"<>"))
et il faut dans Alerte d'erreur décocher Quand les données non valides sont tapées.
Car quand vous entrez un nouveau client, évidemment cette donnée n'est pas dans la liste.

Bonjour Sylvanu, et bonjour à tous.

Je reviens vers vous après 6mois pour que vous m'aidiez à perfectionner mon fichier.
Ce que l'on m'a proposé fonctionne mais pas comme je le souhaiterais.
Les listes clients et la page clients et la même pour les machines ne fonctionne pas correctement et ne se mettent pas à jour correctement.
Je souhaiterais vraiment que la liste se mette à jour par ordre alphabétique et sans doublons de janvier à décembre.

Comment puis-je faire?
Je reste à votre disposition si vous voulez plus d'explication.

Merci à vous tous
cordialement

Greg
 

Pièces jointes

  • RELEVE D'HEURES - TEST.xlsm
    99.9 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Je souhaiterais vraiment que la liste se mette à jour par ordre alphabétique et sans doublons de janvier à décembre.
Bonjour gregguadebois,
On est assez loin de la demande du post #1. :)
En fait vous voulez qu'à chaque fois qu'on entre une nouvelle valeur dans une des 4 colonnes, la liste se remette à jour et triée sans doublons ?
En PJ un essai, j'ai pas mal simplifié.
Dans toutes les feuilles de Mois, il y a cette simple macro :
VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Or Target = "" Then Exit Sub
    Select Case Target.Column
        Case 6:     TriClients Target
        Case 7:     TriMachines Target
        Case 10:    TriTaches Target
        Case 11:    TriAutres Target
    End Select
Fin:
End Sub
Qui appelle une des 4 macros de tri du genre :
Code:
' 4 modules quasi identiques pour chacune des 4 listes
' Le paramètre passé est le contenu de la cellule validée qui est ajoutée à la liste correspondante.
Sub TriClients(Chaine)
    Application.ScreenUpdating = False
    With Sheets("CLIENTS")
        DL = 1 + .[A65500].End(xlUp).Row                                           ' Première ligne vide
        .Cells(DL, "A") = Chaine                                                    ' Insertion nouvelle donnée
        .Range("A1:A" & DL).RemoveDuplicates Columns:=1, Header:=xlYes              ' Supprime doublon
        .Range("A1:A" & DL).Sort key1:=.[A1], order1:=xlAscending, Header:=xlYes    ' Tri alpha
    End With
End Sub
Pour les listes Clients, Machines, Taches et Autres taches.
Les listes déroulantes dans les feuilles Mois sont alors :
Code:
Clients :
=DECALER(Liste0;0;0;NB.SI(Liste;"<>"))
Machines :
=DECALER(Liste00;0;0;NB.SI(Liste2;"<>"))
Taches :
=DECALER(Tache10;0;0;NB.SI(TACHES1;"<>"))
Autres :
=DECALER(Tache20;0;0;NB.SI(TACHES2;"<>"))

Dans la PJ j'ai remis à jours toutes les macros dans les feuilles, mais remis à jour les listes déroulantes que dans la feuille Janvier, "YaPuKa" faire pareil sur les 11 autres mois.
Faites un retour s'il y a un quelconque problème.
 

Pièces jointes

  • RELEVE D'HEURES - TEST.xlsm
    95.9 KB · Affichages: 3

gregguadebois

XLDnaute Nouveau
Bonjour gregguadebois,
On est assez loin de la demande du post #1. :)
En fait vous voulez qu'à chaque fois qu'on entre une nouvelle valeur dans une des 4 colonnes, la liste se remette à jour et triée sans doublons ?
En PJ un essai, j'ai pas mal simplifié.
Dans toutes les feuilles de Mois, il y a cette simple macro :
VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Or Target = "" Then Exit Sub
    Select Case Target.Column
        Case 6:     TriClients Target
        Case 7:     TriMachines Target
        Case 10:    TriTaches Target
        Case 11:    TriAutres Target
    End Select
Fin:
End Sub
Qui appelle une des 4 macros de tri du genre :
Code:
' 4 modules quasi identiques pour chacune des 4 listes
' Le paramètre passé est le contenu de la cellule validée qui est ajoutée à la liste correspondante.
Sub TriClients(Chaine)
    Application.ScreenUpdating = False
    With Sheets("CLIENTS")
        DL = 1 + .[A65500].End(xlUp).Row                                           ' Première ligne vide
        .Cells(DL, "A") = Chaine                                                    ' Insertion nouvelle donnée
        .Range("A1:A" & DL).RemoveDuplicates Columns:=1, Header:=xlYes              ' Supprime doublon
        .Range("A1:A" & DL).Sort key1:=.[A1], order1:=xlAscending, Header:=xlYes    ' Tri alpha
    End With
End Sub
Pour les listes Clients, Machines, Taches et Autres taches.
Les listes déroulantes dans les feuilles Mois sont alors :
Code:
Clients :
=DECALER(Liste0;0;0;NB.SI(Liste;"<>"))
Machines :
=DECALER(Liste00;0;0;NB.SI(Liste2;"<>"))
Taches :
=DECALER(Tache10;0;0;NB.SI(TACHES1;"<>"))
Autres :
=DECALER(Tache20;0;0;NB.SI(TACHES2;"<>"))

Dans la PJ j'ai remis à jours toutes les macros dans les feuilles, mais remis à jour les listes déroulantes que dans la feuille Janvier, "YaPuKa" faire pareil sur les 11 autres mois.
Faites un retour s'il y a un quelconque problème.
Bonjour Sylvanu,

Merci d'être au RDV et d'être aussi réactif. Cela fait plaisir.
En effet j'ai testé ton fichier, ca à l'air de fonctionner très bien. Merci
Par contre, petite question.
Imaginons, La machine "AA" est un prototype et je souhaite remplacer le nom "AA" par son vrai nom, le AA reste la feuille machine et du coup dans la liste de choix.
Je suppose que c'est trop compliqué de remédier à cela?

Cordialement
Greg
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour gregguadebois,
Je ne comprends pas bien la question qui peux avoir deux lectures :
1- Dans la feuille MACHINES vous changez AA par ABCD et dans les listes déroulantes vous verrez apparaitre ABCD au lieu de AA.
2- Le changement de nom doit aussi se faire dans toutes les feuilles où elles sont déjà inscrites, alors là, oui, c'est plus complexe, il faut faire un changement sur toutes les feuilles.
 

gregguadebois

XLDnaute Nouveau
Bonjour gregguadebois,
Je ne comprends pas bien la question qui peux avoir deux lectures :
1- Dans la feuille MACHINES vous changez AA par ABCD et dans les listes déroulantes vous verrez apparaitre ABCD au lieu de AA.
2- Le changement de nom doit aussi se faire dans toutes les feuilles où elles sont déjà inscrites, alors là, oui, c'est plus complexe, il faut faire un changement sur toutes les feuilles.
Donc oui cela serait complexe, car je pense votre lecture 2
en effet, si sur la page janvier je change AA en G3 par ABCD, ABCD s'ajoute et se trie dans onglet MACHINES et le AA disparait de celui ci et de liste déroulante ( à la condition bien évidemment que j'ai changer tout les AA dans la colonne machine de tout les mois.

Tans pis alors, au pire cela peux ce faire manuellement
 

Discussions similaires

Statistiques des forums

Discussions
312 192
Messages
2 086 054
Membres
103 109
dernier inscrit
boso_vs_viking