Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Calculs de valeurs consecutive


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2019
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Calculs de valeurs consecutive
    Bonjour à tous,

    Je fais appel à vous car je bloque depuis quelques jours sur une requête. Je voudrais calculés le nombre de jours qu'un achat a été réalisé consécutivement. Pour cela, j'ai recodé la variable Achat en 0/1. ce que je souhaiterais c'est faire la somme de tous les 1 tant qu'il n'y a pas de 0 apparaissant. Je voudrais grouper cela par acteur. Je ne sais pas si cela a été clair ou pas. Ainsi, je vous propose un fichier Excel avec mon fichier de base et les résultats souhaités pour que vous puissiez mieux comprendre.
    exemple.xlsx

    Merci d'avance pour votre retour.
    Cordialement.

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    juin 2007
    Messages
    14 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2007
    Messages : 14 617
    Points : 30 097
    Points
    30 097
    Par défaut
    Une solution simple est de créer une nouvelle colonne comptant incrémentant un compteur tant que la colonne Achat est à 1 et revenant à 0 sinon.
    Par exemple, si "Achat" est en colonne A et commence à la ligne 1, mettre en B2 =SI(A2=1;B1+1;0) et copier B2 dans les lignes du dessous.
    Il suffit ensuite d'une fonction MAX() pour connaitre la taille de la suite la plus longue.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2019
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    merci pour votre retour. Mais comment puis-je faire pour que cela se groupe par acteur ? Et pour afficher la date dans les tableaux de mes résultats souhaités ?

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    juin 2007
    Messages
    14 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2007
    Messages : 14 617
    Points : 30 097
    Points
    30 097
    Par défaut
    Il suffit de faire une colonne par acteur et de rajouter une condition dans la colonne du SI.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2019
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Je suis désolée, je ne vois pas très bien ce que vous voulez dire. Pourriez-vous me fournir un exemple de formule via un fichier Excel si cela ne vous dérange pas ?

  6. #6
    Membre expert Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    décembre 2013
    Messages
    1 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2013
    Messages : 1 944
    Points : 3 299
    Points
    3 299
    Par défaut
    Bonjour
    j'ai lu sur le net que des nouvelles fonctions telle que MIN.SI.ENS et MAX.SI.ENS disponible avec Excel 2016 / Office 365 je crois que ces fonctions réponds en partie à tes besoins..
    Pour ton cas j'ai essayer de bricolé un code
    à tester avec prudence sur une copie de ton fichier...je suis qu'un autodidacte qui supporte aucune responsabilité en cas de perte des données
    code plein de bricolage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Sub test()
    Application.ScreenUpdating = False
    Dim F1 As Worksheet
    Dim F2 As Worksheet
    Set F1 = Sheets("Feuil2")
    Set F2 = Sheets("RESULTAT")
      F2.Cells.ClearContents
    Dim unique As New Collection
    Dim i As Integer
    On Error Resume Next
    For Each cel In F1.Range("A2:A" & [A65000].End(xlUp).Row)
    If F1.Cells(cel.Row, 2) <> 0 Then
        unique.Add cel.Value, CStr(cel.Value)
        End If
    Next cel
     F2.Cells(1, 1).Resize(1, 4) = Array("Acteur", "periode Debut", "Periode Fin", "Nombre de validation")
    ligne = 2
    On Error GoTo 0
    For i = 1 To unique.Count
    F2.Cells(ligne, 1) = unique(i)
    ligne = ligne + 1
    Next i
     
    Dim derlig As Long
    Dim lngNumLigne As Long
    derlig = F2.Cells(Rows.Count, 1).End(xlUp).Row
    For L = 2 To derlig
    F2.Cells(L, 4) = WorksheetFunction.CountIfs(F1.Columns("A"), F2.Cells(L, 1), F1.Columns("C"), 1)
    Next L
    For J = 2 To derlig
    F1.Range("A1:C" & derlig).AutoFilter Field:=1, Criteria1:=F2.Cells(J, 1)
     Dim Lig As Long
    Lig = F1.Range("A2:A" & derlig).SpecialCells(xlCellTypeVisible).Row
    F2.Cells(J, 2) = F1.Cells(Lig, 2)
    For Each cell In F1.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible)
        lngNumLigne = cell.Row
    Next cell
    F2.Cells(J, 3) = F1.Cells(lngNumLigne, 2)
    F1.ShowAllData
    Next J
    Application.ScreenUpdating = True
    End Sub
    Fichiers attachés Fichiers attachés
    -----------------------------------------------*****-------------------------------------------------------------------------------------------
    you don't have to be muslim to support the Palestinian people you just have to be human
    Vous ne devez pas être musulman pour soutenir le peuple palestinien, vous devez juste être humain

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2019
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Bonjour Bennasr,

    Je m'excuse pour le retard de la réponse.
    Cela me semble bon, sauf que j'aurais souhaités avoir pour un acteur par exemple toutes les fois ou celui-ci a réalisé des études consécutivement et pas seulement son maximum.

    Cordialement,

  8. #8
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    février 2010
    Messages
    6 510
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : février 2010
    Messages : 6 510
    Points : 12 151
    Points
    12 151
    Par défaut
    Bonjour à tous

    Quelle version Excel utilises-tu ?

    On demande de le préciser dans l'en-tête du fil car les solutions possibles en dépendent

    A noter que ton exemple est erroné ou les règles sont à compléter car basé sur l'ordre des lignes mais si on analyse par personne et par date, Yves a 5 validations du 28/11/2018 au 07/01/2019...

    Est-il normal de voir Clotilde et Clhotilde ?
    Chris

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2019
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    J'utilise la version Excel 2010.

    Ah oui, c'est un exemple et j'avais mal renseigné la valeur pour Yves. Je corrige ça de suite.
    Merci pour la remarque.

    exemple.xlsx

  10. #10
    Membre expert
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    juillet 2016
    Messages
    1 724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : juillet 2016
    Messages : 1 724
    Points : 3 039
    Points
    3 039
    Par défaut
    Bonjour,

    Exemple en I8 à tirer vers le bas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NB.SI.ENS($A$2:$A$2000;$F8;($D$2:$D$2000);">="&$G8;($D$2:$D$2000);"<="&$H8;$C$2:$C$2000;1)
    Pour une question de clarté et de simplicité j'ai créer une colonne qui reprend les dates seules (sans les heures), les calculs se font sur cette colonne. Attention, dans la liste des noms, plusieurs d'entr'eux comportent des espaces à la fin ce qui risque de donner de faux résultats.
    Nom : Capture.JPG
Affichages : 26
Taille : 108,0 Ko

    Le fichier
    Romain_dbs_ Calculs de valeurs consecutive.xlsx

    Cdlt

  11. #11
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    février 2010
    Messages
    6 510
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : février 2010
    Messages : 6 510
    Points : 12 151
    Points
    12 151
    Par défaut
    RE à tous

    Et pour Clhotilde ?

    Faisable par PowerQuery intégré à partir de 2016, en add on à partir de 2010.

    Exemple
    Nom : Consécutifs.jpg
Affichages : 25
Taille : 141,4 Ko

    Peux-tu télécharger l'add on chez Microsoft et l'installer ?

    @Arturo : il faut calculer les dates de chaque groupe de jours consécutifs...
    Chris

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2019
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Bonjour @78chris,

    Je ne savais pas que l'on pouvait installer Power Query sur Excel 2010. Une fois que je l'ai installé comment est-il possible d'obtenir le résultat souhaité ?

    Merci @ARTURO83, je regarde votre fichier de suite, et je vous fait un retour si cela fonctionne.

  13. #13
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    février 2010
    Messages
    6 510
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : février 2010
    Messages : 6 510
    Points : 12 151
    Points
    12 151
    Par défaut
    Bonjour

    • Supprimer les lignes 1302, 1304 à 1314
    • Mettre la source sous forme de tableau structuré, nommé Data (en remplacement de Tableau1)
    • Activer, si nécessaire la ligne des Totaux du Tableau
    • Puis onglet PowerQuery, A partir d'un tableau : ce qui ouvre PowerQuery : a gauche les requêtes, Data pour l'instant, au centre les données, à droite les étapes de la requête en cours.
      Il y en a deux affichées, Source et Type Modifié
    • Sélectionner la colonne date, onglet Accueil, Type de données, Date : confirmer le remplacement
    • Si la ligne des Totaux du tableau est activée : filtrer la colonne Acteur, Filtre textuel, non égal à Total
    • Trier par Acteur et date
    • Onglet Ajouter une colonne, Colonne d'Index
    • A nouveau Onglet Ajouter une colonne, Colonne d'Index à dérouler, A partir de 1
    • Accueil, Fusionner les requêtes : en seconde requête sélectionner Data, dans le première sélectionner la colonne Index, dans la seconde Index.1, type de jointure Externe Gauche
    • Cliquer sur la double flèche près du titre de la dernière colonne : décocher tout sauf Acteur et Etude Oui/Non
    • Onglet Ajouter une colonne, Colonne personnalisée : nom Periode, formule
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      if [#"Etude Oui/Non"]=1 and [Acteur.1]=null then 1 
      else if [Acteur]=[Acteur.1] and [#"Etude Oui/Non"]=1 and [#"Etude Oui/Non.1"]=0 then [Index] else if [#"Etude Oui/Non"]=0 then 0 else null
    • sélectionner la colonne Periode, clic doit sur le titre, Remplir, vers le bas
    • filtrer la colonne Periode pour ne pas afficher 0
    • sélectionner les colonnes Acteur, Periode onglet Transformer, Regrouper par
      Paramétrer les 3 opérations suivantes :
      - Nombre de validations, somme, Etude Oui/Non
      - Periode debut, Min, date
      - Periode fin, Max, date
    • trier par Periode début
    • supprimer la colonne Periode
    • glisser/déplacer les colonnes comme souhaitées
    • sortir par Fermer et charger dans, Table et choisir l'emplacement voulu
    Chris

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

Discussions similaires

  1. Calcul de valeurs propres
    Par Andrey dans le forum Pascal
    Réponses: 6
    Dernier message: 12/02/2007, 00h20
  2. calcul de valeurs présentes dans une liste de résultat
    Par Makaveli33 dans le forum Access
    Réponses: 8
    Dernier message: 15/05/2006, 20h03
  3. Problème champs calculés et valeur null
    Par markintell dans le forum Access
    Réponses: 18
    Dernier message: 10/01/2006, 19h14
  4. Réponses: 6
    Dernier message: 22/11/2005, 18h08
  5. [Debutant]calcul de valeurs propres, givens-householder
    Par malbarre dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 18/08/2005, 17h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo