Tri de données sur autre feuille excel [Résolu/Fermé]

Signaler
Messages postés
21
Date d'inscription
lundi 21 septembre 2015
Statut
Membre
Dernière intervention
19 octobre 2015
-
Messages postés
21
Date d'inscription
lundi 21 septembre 2015
Statut
Membre
Dernière intervention
19 octobre 2015
-
Bonjour,

J'aimerais réaliser une sorte de tri dans mes donnés sois par macro ou VBA ce qui me semble la meilleures solution mais étant pas du tout doué en programmation je fais appel à vous pour m'orienter vers la bonne direction.



Voici le résultat que j'aimerais sur une autre feuille excel donc mon but final et de pouvoir faire du publipostage avec Word. Voilà pour quoi j'aurais besoin que le tri me mette tout ceci sur une seule ligne.


Merci d'avance et bonne semaine à tous.




5 réponses

Messages postés
12776
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 octobre 2020
2 043
Bonjour

Si tu veux une aide pour une macro il faut ton fichier, pas son image

A poster sur cjoint.com, faire créer un lien, le copier et revenir l'indiquer ici

Cdlmnt
Via
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
21
Date d'inscription
lundi 21 septembre 2015
Statut
Membre
Dernière intervention
19 octobre 2015

voilà le lien https://www.cjoint.com/c/EIwggM0lG7e merci j'avais oublié.
Messages postés
21
Date d'inscription
lundi 21 septembre 2015
Statut
Membre
Dernière intervention
19 octobre 2015

https://www.cjoint.com/c/EIwggM0lG7e voici donc le lien de mon fichier et j'ajoute aussi que ma liste va bien grandir par la suite.
Messages postés
12776
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 octobre 2020
2 043
Ok je regarde ça et je te fais un retour dans la journée
Messages postés
12776
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 octobre 2020
2 043
Re,

Tu dis que la liste va grandir par la suite mais :
1) est ce toujours le même intervenant ?
2) les données d'un même intervenant doivent elles être toutes sur la même ligne dans la feuille 2 (en ce cas il faudra rajouter des colonnes)
3) Y aura t il des périodes différentes ? (pour l'instant il n'y a que janvier) et comment faudra t il les différencier sur feuille 2, une ligne par période et par intervenant ? (faudra rajouter une colonne indiquant la période)

En attente de précision, voire avec un tableau avec plus de lignes

Cdlmnt
Via

"L'imagination est plus importante que le savoir." A. Einstein
Messages postés
21
Date d'inscription
lundi 21 septembre 2015
Statut
Membre
Dernière intervention
19 octobre 2015

Merci de prendre du temps pour mon cas.

1) non les intervenants changent et il y en aura beaucoup plus.
2) oui une ligne par intervenant avec tous ces cours données les filières de ces cours et leurs périodes
3) non mais ça me fait penser que j'aurais besoin de l'année courante de tous ces cours.

j'ai rajouté ici des données peut-être ça va t'éclairer un peu plus
https://www.cjoint.com/c/EIwnp0Ma51e
Messages postés
12776
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 octobre 2020
2 043 >
Messages postés
21
Date d'inscription
lundi 21 septembre 2015
Statut
Membre
Dernière intervention
19 octobre 2015

Re,

Un essai :
http://www.cjoint.com/c/EIwuvbGulJ0

La colonne C de Résultat avec la formule pour compter les périodes est protégée

Comme il n'y a pas de dates dans Résultat cela implique un programme par année et un feuille Résultat par année

Cdlmnt
Via
Messages postés
21
Date d'inscription
lundi 21 septembre 2015
Statut
Membre
Dernière intervention
19 octobre 2015

merci le projet a fait un énorme bond en avant mais là en liant ton code avec mon vrai fichier je remarque que des fois il place les données plus loin en laissant les case vide jusqu'à l'intitulé 10 par exemple.

j'ai pris une capture d'une de ces erreurs.



et du coup je pense que le calcule des nombres total des périodes est faussé

Merci encore
Messages postés
12776
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 octobre 2020
2 043 >
Messages postés
21
Date d'inscription
lundi 21 septembre 2015
Statut
Membre
Dernière intervention
19 octobre 2015

Bonjour

Je ne comprends pas , tout fonctionne parfaitement dans l'exemple que je t'ai envoyé !

Si le Else pose problème tu peux remplacer le bloc If .... Else ... par 2 blocs If, l'un testant la condition=0 l'autre la condition >0
If exist = 0 Then
    ligne2 = Sheets(2).Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row + 1
    Sheets(2).Cells(ligne2, 2) = interv
    Sheets(2).Cells(ligne2, 3) = Year(Cells(n, 2))
    col = 5
    End If
    
    If exist > 0 Then
    ligne2 = Sheets(2).Columns(2).Find(interv, , , , xlByColumns, xlPrevious).Row
    lecours = Range("I" & n)
    dej = Application.WorksheetFunction.CountIf(Sheets(2).Rows(ligne2 & ":" & ligne2), lecours)
    If dej > 0 Then col = Application.WorksheetFunction.Match(lecours, Sheets(2).Rows(ligne2 & ":" & ligne2), 0) Else col = Sheets(2).Rows(ligne2).Find("*", , , , xlByRows, xlPrevious).Column + 1
    End If


Cdlmnt
Via
Messages postés
21
Date d'inscription
lundi 21 septembre 2015
Statut
Membre
Dernière intervention
19 octobre 2015
>
Messages postés
12776
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 octobre 2020

je ne dis pas le contraire votre exemple est parfait mais je pense que je ne prend peut-être pas tout mais je vais voir avec des if.
Messages postés
21
Date d'inscription
lundi 21 septembre 2015
Statut
Membre
Dernière intervention
19 octobre 2015
>
Messages postés
12776
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 octobre 2020

j'ai remis le else est ça fonctionne il fusionne mais par contre il ne cumul pas les nombre de période ensemble comme le fait ton exemple...

    If interv <> "" And excep = 0 Then

        exist = Application.WorksheetFunction.CountIf(Sheets("Résultat").Range("B:B"), interv)
        
            If exist = 0 Then
           
                ligne2 = Sheets("Résultat").Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row + 1
                Sheets("Résultat").Cells(ligne2, 2) = interv
                Sheets("Résultat").Cells(ligne2, 3) = Year(Cells(n, 2))
                col = 5
                'End If
                
Else
            'If exist > 0 Then

            ligne2 = Sheets("Résultat").Columns(2).Find(interv, , , , xlByColumns, xlNext).Row
            
            lecours = Range("I" & n)
            dej = Application.WorksheetFunction.CountIf(Sheets("Résultat").Rows(ligne2 & ":" & ligne2), lecours)
           
                If dej > 0 Then col = Application.WorksheetFunction.Match(lecours, Sheets("Résultat").Rows(ligne2 & ":" & ligne2), 0) Else: col = Sheets("Résultat").Rows(ligne2).Find("*", , , , xlByRows, xlPrevious).Column + 1
                
            
          
          '  col = Sheets("Résultat").Rows(ligne2).Find("*", , , , xlByRows, xlPrevious).Column + 1
'MsgBox ligne2
            End If
        Sheets("Résultat").Cells(ligne2, col) = Cells(n, 9)
        Sheets("Résultat").Cells(ligne2, col + 1) = Cells(n, 8)
        Sheets("Résultat").Cells(ligne2, col + 2) = Cells(n, 27)
    End If



Dans mon résultat il écrit la dernière période par dessus et ne les additionnes pas enfaite.
Messages postés
12776
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 octobre 2020
2 043 >
Messages postés
21
Date d'inscription
lundi 21 septembre 2015
Statut
Membre
Dernière intervention
19 octobre 2015

Bonjour Skyggen,

Normal puisque tu n'a pas mis l'addition dans la dernière ligne de ta macro comme dans celle de mon exemple ! :
Sheets(2).Cells(ligne2, col + 2) = Sheets(2).Cells(ligne2, col + 2) + Cells(n, 27)


Une fois cela rectifié tout devrait fonctionner
Messages postés
21
Date d'inscription
lundi 21 septembre 2015
Statut
Membre
Dernière intervention
19 octobre 2015
>
Messages postés
12776
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 octobre 2020

Merci oui tous fonctionne et tout est parfait un grand merci