Lister Sans Doublons Et Totalisation (VBA) (Résolue)

Dranreb

XLDnaute Barbatruc
Re : Lister Sans Doublons Et Totalisation (VBA)

Ben faites une structure adaptée à ce qu'il vous faut.
Ce n'est pas une obligation d'explorer tous les .Contenu, vous pouvez très bien faire un test sur un .Id d'un SsGroup pour ne pas traiter son contenu.

Vous avez maintenant assez d'exemples pour comprendre comment fabriquer une collection avec la fonction GroupOrg et l'explorer. Relisez les commentaires explicatifs pour bien comprendre en quoi la programmation qu'on a réalisée les applique.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Lister Sans Doublons Et Totalisation (VBA)

Faites peut être la même chose que pour la CAP … (MENS) en allant chercher les info dans PAIE-HOR et regardez après en quoi ça ne va pas tout à fait.
 

marfipo

XLDnaute Occasionnel
Re : Lister Sans Doublons Et Totalisation (VBA)

j'ai fait la même chose comme la demande 5 mais le code ne fait rien dans l'onglet CAP Congés (Hor) qui reste vide
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Re : Lister Sans Doublons Et Totalisation (VBA)

Non, non. Il n'est pas vide. Mais il est renseigné seulement à partie de la ligne 56…
Tâcher de comprendre pourquoi, cette fois ci. Car c'est évident.
 

marfipo

XLDnaute Occasionnel
Re : Lister Sans Doublons Et Totalisation (VBA)

Bonjour ma pomme,
merci beaucoup à vous aussi pour toutes vos réponses mais c'est vraiment pas ce que je désire vous avez changé toutes les modifications du dernier fichier ou j'avais besoin de deux demandes je ne sais pas si vous avez fait la remarque.

par contre je suis sur la dernière demande avec dranreb pour compléter ce projet...
 

marfipo

XLDnaute Occasionnel
Re : Lister Sans Doublons Et Totalisation (VBA)

Re dranreb,
j'ai réussi a trouver la faille c'était LS=0 qui manquait comme vous pouvez constater sur le fichier ci-joint que j'ai modifié
maintenant sur la colonne M de l'onglet CAP Congés (Hor) je veux que les cellules M7, M20 et M21 et toutes les celulles de cette colonne qui prennent la valeur MATX.400210.99.MO prennent la valeur de la cellule M7 de l'onglet RECAP qui est MATX.400210.DS.CH et non pas MATX.400210.99.MO

comment faire ?
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Re : Lister Sans Doublons Et Totalisation (VBA)

Faisons le comme ça :
VB:
LS = 0

Dim EOTP99MO As String, EOTPCongésHOR As String
EOTP99MO = Me.[G7].Value: EOTPCongésHOR = Me.[M7].Value
Set Données = GroupOrg(PlgUti(Feuil2.[A2]), 4, 30)
ReDim TS(1 To 5000, 1 To 2), TMon(1 To 5000, 1 To 1)
For Each PointPaie In Données
   For Each EOTP In PointPaie.Contenu
      LS = LS + 1
      TS(LS, 1) = IIf(EOTP.Id = EOTP99MO, EOTPCongésHOR, EOTP.Id)
      TS(LS, 2) = PointPaie.Id
      For Each Détail In EOTP.Contenu
         TMon(LS, 1) = TMon(LS, 1) + Détail(23)
         Next Détail, EOTP, PointPaie
Feuil7.[M7].Resize(LS, 2).Value = TS
Feuil7.[D7].Resize(LS).Value = TMon
End Sub
 

marfipo

XLDnaute Occasionnel
Re : Lister Sans Doublons Et Totalisation (VBA)

super c'est exactement ce que je voulais...
maintenant dans le fichier ci-joint sur les lignes 20, 21 et 22 de l'onglet CAP Congés (Hor) ils ne prennent pas la même mise en forme que les autres lignes du tableau

donc si par exemple je rajoute des nouvelles informations sur les les feuilles de sources (PAIE-MENS & PAIE-HOR)
d'autres lignes se rajoutent sur les onglet ODA-MENS, ODA-HOR, CAP Congés (Mens) et CAP Congés (Hor)
je veux que ces lignes qui se rajoutent sur ces feuilles aient la même mise en forme et les mêmes valeurs aussi bien que les formules qui sont répétés sur les lignes du tableau
 

Fichiers joints

Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Lister Sans Doublons Et Totalisation (VBA)

Oui. On s'est juste contenté de remplir des colonnes, un peu pour parer au plus pressé. Mais j'ai vu ce problème venir depuis longtemps.
Et malheureusement dans son état actuel ValPlgAju ne permettra pas de le résoudre partout.
Ce que je vous propose c'est de commencer par mettre les plages résultantes sous forme de tableaux Excel.
Dans les codes, avant chaque déchargement de TS, supprimez environ 500 lignes à partir de la .Row(LigneDébut + LS), pour le cas où il y aurait moins de lignes qu'au traitement précédent.
Ça devrait régler le problème, car lorsqu'on écrit juste en dessous de données mises en forme de tableau, Excel les ajoute à celui ci en reconduisant automatiquement les formats et les formules.
 
Dernière édition:

marfipo

XLDnaute Occasionnel
Re : Lister Sans Doublons Et Totalisation (VBA)

mon cher,
la j'ai rien compris en cherchant dans le code...vous pouvez le faire a ma place s'il vous plait ??
 

Dranreb

XLDnaute Barbatruc
Re : Lister Sans Doublons Et Totalisation (VBA)

Ça commence dans Excel par onglet Accueil, groupe Style, Mettre sous forme de tableau.

Et dans le code pour la Feuil4 (ODA MENS) par exemple :
VB:
Feuil4.Rows(8 + LS).Resize(500).Delete
Feuil4.[L8].Resize(LS).Value = WorksheetFunction.Index(TS, 0, 1)
Feuil4.[H8].Resize(LS).Value = WorksheetFunction.Index(TS, 0, 3)
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Re : Lister Sans Doublons Et Totalisation (VBA)

Bonsoir marfipo,

(...) merci beaucoup à vous aussi pour toutes vos réponses mais c'est vraiment pas ce que je désire vous avez changé toutes les modifications du dernier fichier ou j'avais besoin de deux demandes je ne sais pas si vous avez fait la remarque (...)
Alors là, je ne comprends pas votre réponse. Ce n'est pas un de vos fichiers construit avec Dranreb que j'ai modifié, mais le premier fichier que j'ai envoyé.

J'ai rajouté un tri des deux premières feuilles (avec l'ancienne codification !) et dédoubler les lignes à plusieurs points de paye en recalculant le total de chaque ligne.
 
Dernière édition:

marfipo

XLDnaute Occasionnel
Re : Lister Sans Doublons Et Totalisation (VBA)

re Dranreb,
la solution que vous m'avez proposé ca me va pas parce que les tableau que j'ai dans mon fichier sont exporté d'un logiciel qui s'appelle SAP alors en faisant la manip de : Mettre sous forme de tableau je ne pourrai pas par la suite copier et coller le tableau sur le logiciel on peu pas le faire juste avec des codes ??

mapomme,
je parlais de votre fichier c'est juste que vous n'avez pas bien compris mes deux dernières demandes en tt cas merci beaucoup pour tout Dranreb a répondu sur presque toutes mes demandes...reste juste la mise en forme si vous suivez bien ce qu'on a écrit
 

Dranreb

XLDnaute Barbatruc
Re : Lister Sans Doublons Et Totalisation (VBA)

Ce ne sont pas juste les feuille de données PAIE-MENS et PAIE-HOR qui sont importées de SAP ?
Celles ci n'ont pas besoin d'être mises en forme de tableau
Maintenant s'il n'y a pas de formule dans les feuilles résultantes vous pouvez aussi essayer avant d'envoyer les TS des :
VB:
ValPlgAju(PlgUti(Feuil4.[A8]), LS) = PlgUti(Feuil4.[A8]).Value
Ou mieux :
VB:
Set Plg = PlgUti(Feuil4.[A8]): ValPlgAju(Plg, LS) = Plg.Value
Remarque: ça implique, en plus de l’absence de formule, qu'il n'y ait jamais rien au delà des résultats.

Mais je ne vois pas en quoi des tableaux Excel sur les seules feuilles résultantes gêneraient leur exportation.
 
Dernière édition:

marfipo

XLDnaute Occasionnel
Re : Lister Sans Doublons Et Totalisation (VBA)

re,
toutes les 4 dernières feuiles sont exportés de SAP
je les exportes d'une transaction pour faire ces calcules la avant de les copier dans une nouvelle transaction.

les deux codes gardent la mise en forme mais renvoient une erreur c'est qu'ils ne copient pas les valeurs precedantes comme vous pouvez constater sur le fichier ci-annexé
 

Fichiers joints

Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Lister Sans Doublons Et Totalisation (VBA)

Et SAP ne vous envoie pas le nombre de lignes qu'il faut…

Ajoutons cette fonction dans le module Utilit :
VB:
Function LignesAjustées(ByVal Début As Range, ByVal LMax As Long) As Range
Rem. Rectifie le nombre de lignes entières utilisées à partir d'une cellule spécifiée.
'    Début : Cellule ou ligne de début.
'    LMax :  Le nombre de lignes souhaitées.
Set LignesAjustées = PlgUti(Début.EntireRow)
Dim Dif&: Dif = LMax - LignesAjustées.Rows.Count
If Dif > 0 Then
   With LignesAjustées.Rows(LignesAjustées.Rows.Count \ 2 + 1)
      .Copy: .Resize(Dif).Insert xlShiftDown: End With
   Application.CutCopyMode = False
ElseIf Dif < 0 Then
   LignesAjustées.Rows(LignesAjustées.Rows.Count \ 2 + 1).Delete xlShiftUp
   End If
End Function
Tâchez de trouver comment l'utiliser pendant que je mets les utilisations de mon coté…
 
Dernière édition:

marfipo

XLDnaute Occasionnel
Re : Lister Sans Doublons Et Totalisation (VBA)

en ajoutant le code sur le module util et l'autre sur la feuile recap comme vous pouvez voir j'ai toujours le même problème
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Re : Lister Sans Doublons Et Totalisation (VBA)

Il y avait une erreur dans la fonction. Reprenez le code corrigé.
Et puis c'est pas le tout: Il faut l'utiliser cette fonction sinon elle ne sert à rien.

Je joins la version actuelle.
 

Fichiers joints

Dernière édition:

Discussions similaires


Haut Bas