Microsoft 365 liste d'aliments à réduire

weblista

XLDnaute Nouveau
Bonjour,
J'ai une liste d'achat où je place les aliments à chaque achat.
Afin de faire une synthèse de ces achats, j'aimerais avoir un tableau récapitulatif avec le total par aliment. Quelle serait la formule pour extraire un aliment par ligne ?
j'ai fait une explication plus détaillée dans le fichier joint.
Merci d'avance de votre aide précieuse !
 

Fichiers joints

Claudy

XLDnaute Accro
Bonjour,
si j'ai bien compris tu veux une liste sans doublon?
Tu copies ta liste dans une autre colonne et tu vas dans données...supprimer les doublons.
1573468089494.png

A+
Claudy
 

weblista

XLDnaute Nouveau
Bonjour à tous,

Utiliser le menu Données / Avancé
Voir la pièce jointe 1045762
merci beaucoup ! @Claudy @mapomme Fonctionnalité à laquelle je n'avais pas pensé...
Ceci dit, c'était plutôt pour mettre sur une autre feuille un extract qui se tient à jour par rapport à ma liste initiale que je vais continuer à alimenter, peut-être avec de nouveaux noms...
Existe-t-il une formule que je puisse glisser sur toute ma colonne pour ne pas à avoir à faire de mises à jour ?
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Le plus rapide est l'utilisation de VBA.

Le code principal est dans le module de nom Module1.
  1. la procédure AlimentsSansDoublon est lancée quand on ouvre le classeur - voir module de ThisWorkbook
  2. la procédure AlimentsSansDoublon est lancée chaque fois qu'on sélectionne la feuille "Feuil1" - voir module de la feuille "Feuil1"
Code dans ThisWorkbook:
VB:
Private Sub Workbook_Open()
   AlimentsSansDoublon
End Sub
Code dans le module de la feuille de nom "Feuil1":
Code:
Private Sub Worksheet_Activate()
   AlimentsSansDoublon
End Sub
Code dans Module1:
Code:
Option Explicit
Const CelluleDestination = "d5"

Sub AlimentsSansDoublon()
Dim derCellule As Range, source As Range
   With Sheets("Feuil6")
      Set source = .Range(.Range("a1"), DerCellNonVide(.Range("a:a"))): End With
   With Sheets("Feuil1").Range(CelluleDestination)
      .EntireColumn.Clear
      source.Copy .Range("a1")
      .Resize(source.Rows.Count).RemoveDuplicates Columns:=1, Header:=xlYes
      .Value = "Extraction"
      .EntireColumn.AutoFit
   End With
End Sub

Function DerCellNonVide(xplage As Range) As Range
Dim i&, j&
   On Error Resume Next
   i = Application.Match(999 ^ 9, xplage.Columns(1), 1)
   j = Application.Match(String(255, "z"), xplage.Columns(1), 1)
   On Error GoTo 0
   If i + j <> 0 Then Set DerCellNonVide = xplage.Columns(1).Cells(IIf(i > j, i, j), 1)
End Function
 

Fichiers joints

Claudy

XLDnaute Accro
Bonjour Mapomme...
Whoa, super
t'es pas barbatruc pour rien(Comme d'autres ici dans le forum)
T'as pas mal à la tête?
Bonne journée
Claudy
 

eriiiic

XLDnaute Barbatruc
Je n'ai jamais compris pourquoi MS refuse une option de mise à jour automatique dans les propriétés du TCD.
Je pense que le but est de pouvoir traiter de grosses masses de données au coup par coup, sans influence sur la réactivité de l'interface.
C'est vrai qu'avec la puissance des processeurs d'aujourd'hui, il pourrait prévoir une option pour l'automatiser si moins d'une certaine quantité de données.
eric
 

Claudy

XLDnaute Accro
Bonsoir,
perso je découvre, mais pas évident à personnaliser, ou alors je passe à coté de quelque chose....
Bonne soirée,
Claudy
 

eriiiic

XLDnaute Barbatruc
Bah, ça demande 1/2h d'attention et de manipulations pour commencer à comprendre le principe.
Mais l'effort vaut le coup, quel gain de temps une fois acquis.
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas