XL 2019 Extraction - Ajouter une donnée dans une colonne si...

thespeedy20

XLDnaute Occasionnel
Bonjour à tous

J'ai un tableau avec 4 colonnes. Je dois calculer le nombre de Périodes par élèves et domaines d'une feuille 1 à une feuille 2. Pas de soucis pour cela.
je désire juste ajouter un P quand le degré est P1 OU P2 OU P3 (en feuille 1)

Voici l'exemple de la feuille 2

Je vous en remercie d'avance

OLi

Tableau.JPG
 

Pièces jointes

  • Calcul_test2021.xlsm
    27.1 KB · Affichages: 10

thespeedy20

XLDnaute Occasionnel
Bonjour Sylvanu,

merci, cela fonction très bien, de mon coté, j'avais émis l'idée ne pas prendre en compte les P...

VB:
Sub Conso()
Set liste = CreateObject("scripting.dictionary")
With Feuil1
    tablo = .Range("A2:D" & .Cells(Rows.Count, 1).End(xlUp).Row)
          
    For i = 1 To UBound(tablo)
        If Left(tablo(i, 4), 1) <> "P" Then
        
        liste(tablo(i, 1) & "#" & tablo(i, 2)) = _
            liste(tablo(i, 1) & "#" & tablo(i, 2)) + tablo(i, 3)
    Else
    
    End If
    
    Next i
End With
lig = 2
With Feuil3
    For Each k In liste.keys
        .Cells(lig, 1).Resize(1, 3) = Split(k, "#")
        lig = lig + 1
    Next k
    .[C2].Resize(liste.Count, 1) = Application.Transpose(liste.items)
End With

Sheets("Feuil2").Activate
End Sub

J'ai deux solutions au choix...

Encore merci Sylvanu pour ton aide

OLi
 

thespeedy20

XLDnaute Occasionnel
Bonjour Sylvanu,

Je fais de nouveau appel à toi si tu es d'accord bien sur...

on a ajouté une colonne cours dans le tableau...
Cela donnerait dans l'export final :

SYLJPG.JPG


A chaque fois que le cumul des périodes est de 1 , si c'est le degré P, on affiche uniquement le degré, si c'est différent de P, on affiche le degré + le cours. (voir exemple )
Je te remercie pour ton aide
 

Pièces jointes

  • Calcul_test2022.xlsm
    27.7 KB · Affichages: 4

thespeedy20

XLDnaute Occasionnel
Re sylvanu,

Je te remercie pour cette nouvelle solution...

Je viens de tester sur mon fichier réel (+ ou 2000 lignes), voici mes constatations :

- macro un peu lente
- au niveau des P (Substitution P1-P2-P3), petit bug car pas mal reste P1 ou P2 ou P3... et donc le cours juste à coté...(alors que uniquement le P devrait apparaitre.
- un autre petit bug, car la somme des périodes est 2, il met un P (quand le degré est P1, P2 ou P3) alors qu'il devrait rien y avoir...

Sylv2.JPG



-
Sylv3.JPG


Voici pour le retour....
Encore merci pour ton aide

OLi
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
J'ai prisdans votre fichier la matrice de droite comme exemple. Et le seul qui ait un cours est AHA dont le degré est FA1.
J'en conclus que ce fichier n'est pas représentatif. :mad:
E PJ un essai, je met le cours uniquement si Période=1, Degré ="P" et le nom est unique dans la liste Feuil1.
Ce qui fait que dans votre fichier aucune ligne ne remplit le critère. Donc la PJ est un peu en aveugle.
 

Pièces jointes

  • Calcul_test2022 (2).xlsm
    25.7 KB · Affichages: 2

thespeedy20

XLDnaute Occasionnel
Bonsoir,

Mille et une excuses sylvanu, voici le fichier entier.

- Les P s'inscrivent bien dans la colonne Degré...

-J'ai essayée de modifier ta macro pour l'affichage du reste, c'est tous ce qui différent de P (donc ici affiche du degré + cours pour Période =1)... sans succès..., j'ai des P1, P2,P3 qui apparaissent et parfois le cours à coté ???

OLi
 

Pièces jointes

  • Calcul_test2022 (2).xlsm
    119 KB · Affichages: 1

sylvanu

XLDnaute Barbatruc
Supporter XLD
J'avais compris qu "P" devait être dans feuil1 et non dans feuil2.
En PJ un essai.
Quant à la lenteur, j'ai fait des mesures, la macro originale sur mon PC prend 16s, le rajout du traitement des "P" prend 0.79s, donc la lenteur vient de la structure d'origine, non du traitement des cours.
 

Pièces jointes

  • Calcul_test2022 (2) (1).xlsm
    89.1 KB · Affichages: 3

thespeedy20

XLDnaute Occasionnel
Bien le Bonjour Sylvanu,

- J'ai mis mes données en tableau structuré mais rien ne change toujours aussi lente...

- Dans le fichier ci-joint, j'ai surligné en jaune des personnes ayant 2 périodes et dont un P s'affiche...Bizarre et en orange pour ceux pas degré et pas de cours et dont la P=1...encore plus bizarre...

- En feuil2, le résultat que je désirais obtenir...( sans les erreurs Jaune et orange)...

Merci beaucoup

OLi
 

Pièces jointes

  • Calcul_test2022 (2) (2).xlsm
    90.3 KB · Affichages: 1

sylvanu

XLDnaute Barbatruc
Supporter XLD
Vous êtes sérieux, là ?
En post #9 je met la modif suivante :
VB:
    For i = 2 To .Range("A65500").End(xlUp).Row
        If .Cells(i, 3) = 1 And .Cells(i, 4) = "P" Then
            If Application.CountIf(Sheets("Feuil1").[A:A], .Cells(i, 1)) = 1 Then
                Ind = Application.Match(.Cells(i, 1), Sheets("Feuil1").[A:A], 0)
                    .Cells(i, 5) = Sheets("Feuil1").Cells(Ind, "E")
            End If
        End If
    Next i
en post #10 vous me mettez une PJ avec :
Code:
    For i = 2 To .Range("A65500").End(xlUp).Row
        If .Cells(i, 3) = 1 And .Cells(i, 4) <> "P" Then
            If Application.CountIf(Sheets("Feuil1").[A:A], .Cells(i, 1)) = 1 Then
                Ind = Application.Match(.Cells(i, 1), Sheets("Feuil1").[A:A], 0)
                    .Cells(i, 4) = Sheets("Feuil1").Cells(Ind, "D")
                    .Cells(i, 5) = Sheets("Feuil1").Cells(Ind, "E")
            End If
        End If
    Next i
Ensuite comme dit au post #9 :
Quant à la lenteur, j'ai fait des mesures, la macro originale sur mon PC prend 16s, le rajout du traitement des "P" prend 0.79s, donc la lenteur vient de la structure d'origine, non du traitement des cours.
donc la lenteur vient de votre macro mais que de la modif apportée. Qui d'ailleurs n'est pas le point qui était soulevé au post #4. La "lenteur" n'a pas bougée depuis.
Cette lenteur est due à Worksheet_Change de la feuil2. A chaque fois qu'on touche à une cellule de cette page, on exécute cette macro. Il faut donc l'invalider avec :
Code:
Application.EnableEvents = False
puis
Application.EnableEvents = true
En PJ j'ai remis les modif du post #9, et je ne vois pas d'erreur. Le temps d'exécution passe de 16.44s à 0.3s.
 

Pièces jointes

  • Calcul_test2022 (2) (2).xlsm
    89.6 KB · Affichages: 2

thespeedy20

XLDnaute Occasionnel
oups... 😔
L'erreur de vient de ma part, je travaillais sur deux fichiers...désolé...

- Macro quasi instantanée... ;)
- Sur les 2P: c'est deux cours en P dont logique qu'il inscrive P

C'est en ordre pour ma part... 👌

sylvanu, je te remercie encore pour ton aide et ta patience... et je te présente encore mes excuses les plus sincères pour la confusion du fichier.

Bonne Journée

OLi
 

Discussions similaires

Statistiques des forums

Discussions
312 331
Messages
2 087 360
Membres
103 528
dernier inscrit
hplus