Remplir un Tableau a partir d'un autre tableau selon des conditions (VBA)

sylvestre09

XLDnaute Nouveau
Bonjour le forum,
je me retourne vers vous car depuis une semaine je cherche a completer mon projet mais je n'y arrive pas voilà grace à un userform j'entre des données dans plusieurs page j'obtiens donc un tableau avec des opérations saisies (plusieurs lignes) j'aimerai qu'a coté de ce tableau qui existe dans chaque onglet faire un autre tableau avec moins de colonne mais qui sépare les montant négatives des montant positives en les classant selon leur date d'echéance je joint un exemple car c'est difficile d'expliquer !! le Rt souhaité est dans la feuille 2 !!! merci de me donner un coup de main non pas en faisant le travail demandé mais en me guidant un peu car je ne suis pas un pro de VBA
Merci a tous !
 

Pièces jointes

  • Exemple.xls
    30.5 KB · Affichages: 245
  • Exemple.xls
    30.5 KB · Affichages: 256
  • Exemple.xls
    30.5 KB · Affichages: 262

Vorens

XLDnaute Occasionnel
Re : Remplir un Tableau a partir d'un autre tableau selon des conditions (VBA)

salut Syl,


Ma qué d'ou sa sort ce code ? :D

Nan plus sérieusement, pour les années je pence que sa vient de cette ligne

Code:
DateSerial(2012, i, 1)

les mois et les jours sont en variable alors que l'années est hard codée donc c'est cantonné à 2012. Apres sans fichier qui va avec le code, dur dur de le certifier car pas testé =)

Point 2)

Euuuuu pourquoi une fonction with pour tout les onglets ?. Je suppose (car pas testé) que ce code agit sur l'onglet en cours (ActiveWorksheets). Donc peut être que simplement en activant les onglets un après les autres le code s’effectua sur toute tes onglet avec simplement une boucle for (Encore une fois je sais pas si ton code est dans un module, dans la feuille ou dans le ThisWorkbook, donc c'est de la pure théorie)

On y vois une boucle qui parcours de tableau, une autre qui fait une itération par mois de l'année.

Il me faut ton fichier sur le quel est basé ce code si non je pourrais faire que des supposition théorique sans jamais tester. De plus j'ai pas le temps de recréer ton fichier à partir du code :p

Donc pour tous les onglets on peut imaginer une boucle For qui prend tout le code avec dedans un truc du style:

Code:
Dim feuille As Worksheet

For Each feuille In Workbook



ton code


Next

A tester =)
 

sylvestre09

XLDnaute Nouveau
Re : Remplir un Tableau a partir d'un autre tableau selon des conditions (VBA)

Bonjour Vorens dsl pour le retard bon voilà le fichier je t'explique quand on clique sur le bouton feuil1 les opérations dans l'onglet Recap vont alimenter les differents onglets occurs (devises) et là y'a 2 problemes :
1 les dates changent !!!!
2 le tableau pret emprunt colonne AJ contient des doublons !!!!
j'ai changer les formats des dates mais rien ne va :(
 

Pièces jointes

  • Classeur11111.xls
    95.5 KB · Affichages: 81
  • Classeur11111.xls
    95.5 KB · Affichages: 86
  • Classeur11111.xls
    95.5 KB · Affichages: 88

Vorens

XLDnaute Occasionnel
Re : Remplir un Tableau a partir d'un autre tableau selon des conditions (VBA)

Salut,


Les taux et les montants ne sont pas écrit dans la bonne colonne. Inverse les deux colonnes et les doublons disparaissent chez moi. Si dessous les lignes de code ( version corrigée)

Code:
                If c.Offset(, 2) > 0 Then
                    .Cells(LigneCred, "AO") = .Cells(c.Row, 3)
                    .Cells(LigneCred, "AP") = .Cells(c.Row, 5)
                    .Cells(LigneCred, "AR") = .Cells(c.Row, 8)
                    .Cells(LigneCred, "AQ") = .Cells(c.Row, 7)
                    Ctr = Ctr + .Cells(c.Row, 7)
                    LigneCred = LigneCred + 1
                Else
                    .Cells(LigneDeb, "AJ") = .Cells(c.Row, 3)
                    .Cells(LigneDeb, "AK") = .Cells(c.Row, 5)
                    .Cells(LigneDeb, "AM") = .Cells(c.Row, 8)
                    .Cells(LigneDeb, "AL") = .Cells(c.Row, 7)
                    Ctr = Ctr + .Cells(c.Row, 7)
                    LigneDeb = LigneDeb + 1
                End If
 

sylvestre09

XLDnaute Nouveau
Re : Remplir un Tableau a partir d'un autre tableau selon des conditions (VBA)

tu as raison pour les doublons par contre pour les dates y'a quelque chose qui ne va pas j'ai changer les formats mais ca ne marche pas essaye de rajouter les opération dans l'onglet recap par exemple
120327920 29/03/2012 06/07/2014 EUR 500 000,00 1,000 Dep C Ste x xx yu
120327922 29/03/2012 04/10/2013 EUR 4 000 000,00 2,000 Dep C Ste x xx yu
et cliques sur le bouton tu trouvera dans l'onglet EUR
120327920 29/03/2012 07/06/2014 EUR 500 000,00 1 Dep C Ste x xx yu
120327922 29/03/2012 10/04/2013 EUR 4 000 000,00 2 Dep C Ste x xx yu
 

Vorens

XLDnaute Occasionnel
Re : Remplir un Tableau a partir d'un autre tableau selon des conditions (VBA)

Marf

Démonstration:

06/072012 => devient => 07/06/2012

et pour l'autre

04/10/2012 => 10/04/2012

Tu remarque pas quelque chose... Aller un indice =) les jours et les mois s'inverse =) 04/10 <> 10/04. surement quelque chose dans la macro qui fait le truc a l'envers... dit moi si tu trouve pas (je chercherais volontiers moi mais je suis en plein dév. si tu trouve pas rapidement je t'aiderais
 

sylvestre09

XLDnaute Nouveau
Re : Remplir un Tableau a partir d'un autre tableau selon des conditions (VBA)

ok Vorens mais ca n'empeche que je ne suis pas convaincu car si c'etait un truc de se genre toutes les dates s'inverseront mais ce n'est pas le cas bref que test encore et je te tiens au courant merci et bon courage :)
 

Vorens

XLDnaute Occasionnel
Re : Remplir un Tableau a partir d'un autre tableau selon des conditions (VBA)

Re,


bahhh, j'ai quand même tester ce que tu m'as dit avec les deux lignes la.

Dans recap:

120327920 29.03.2012 06.07.2012 EUR 500'000.00 1 Dep C Ste x xx yu
120327922 29.03.2012 04.10.2012 EUR 4'000'000.00 2 Dep C Ste x xx yu


résultat dans EUR

120327922 29.03.2012 04.10.2012 EUR 4'000'000.00 2 Dep C Ste x xx yu
120327920 29.03.2012 06.07.2014 EUR 500'000.00 1 Dep C Ste x xx yu

Oukilé le problème ? Oo


J'ai taper les dates comme sa

04.10.2012 en écrivant les points toussa toussa

Je comprend pas trop pourquoi chez toi sa bug
 

sylvestre09

XLDnaute Nouveau
Re : Remplir un Tableau a partir d'un autre tableau selon des conditions (VBA)

bizarre en fait j'ai mis en commentaire
Code:
Module2.test (occurs)
j'ai pas eu de soucis par rapport au dates donc il y'a quelque chose qui ne va pas dans le code du module2 je pense fort au dictionnaire car c'est lui qui intervient dans la colonne E pour les dates d'echéances qu'est ce que t'en penses ?
 

Vorens

XLDnaute Occasionnel
Re : Remplir un Tableau a partir d'un autre tableau selon des conditions (VBA)

Mmmm


J’ésite car chez moi (avec ton fichier fraîchement téléchargé, j'ai pas de bug donc on peut supposer que le code y est pour rien. Peut être un paramètre Excel qui va pas chez toi.... :/
 

sylvestre09

XLDnaute Nouveau
Re : Remplir un Tableau a partir d'un autre tableau selon des conditions (VBA)

bofff j'en sais rien là !! j'ai changer les formats (dates) pas mal de fois comme je t'avais dit mais ca bug tjr :(
pour la fonction with en fait quand on "mets" le dictionnaire dans le code y'a pas des points "." a mettre quelque part ?
 

Vorens

XLDnaute Occasionnel
Re : Remplir un Tableau a partir d'un autre tableau selon des conditions (VBA)

Code:
Euuu Nan de toute façon si c’était un problème de syntaxe le code planterais. le "dico" est un objet => dictionary qui est une collection plus poussée en gros. On sait par le forum que pour utiliser cela il faut

"un dictionary est une collection plus poussée, qui nécessite l'activation de la bibliothèque Microsoft Scripting Runtime dans Outils\Références."

Je pence que tu l'as fais ?

Pour le With. cela sers uniquement a économiser de l’écriture en indiquant au dessus d'une série d'instruction dans quelle feuille / classeur elles doivent s’exécuter. Tout les "." etc y sont quand tu regarde en l'occurance dans :

Code:
    Set Dico = CreateObject("Scripting.Dictionary")
         For Each c In .Range(.[E4], .Cells(.Rows.Count, 5).End(xlUp))
           If Not Dico.exists(DateSerial(Year(c.Value), Month(c.Value), 1)) Then
             Dico.Add DateSerial(Year(c.Value), Month(c.Value), 1), _
                 DateSerial(Year(c.Value), Month(c.Value), 1)
         End If

y'a en réalité que 1 ligne mais avec des retours a la ligne ("_") ( mais sa tu le sais déjà je pence).

Donc, as tu bien activer ce paramètre décrit plus haut ?
 

sylvestre09

XLDnaute Nouveau
Re : Remplir un Tableau a partir d'un autre tableau selon des conditions (VBA)

effectivement Vorens j'avais pas le point devant le range juste après for each c in :) là j'ai tésté pas ma lde fois a priori ca fonctionne bien par contre pour les doublons ca existe tjr :(
en effet quand j'efface manuellement le tableau pret emprunt de (AJ4) à la dernière celluledu tableau et que j'execute la macro il ne fait pas de doublon par contre quand j'execute sans effacer le tableau ( d'après ce que j'ai compris il reecri dessus) du coup il me fait des doublons un peu partt !!! t'en pense quoi ?
 

Vorens

XLDnaute Occasionnel
Re : Remplir un Tableau a partir d'un autre tableau selon des conditions (VBA)

Mais quelle engouasse ce truc.

Normalement il re écrase le tableau mais bon. Pour être sur qu'il n'y a pas de double tu met une fonction clear comme sa t'es sur de bien repartir de rien ( pour les colonne de Aj a AR ). Essais de plus mettre des "/" dans tes date

seulement des "."

04.10.aaaa
 

sylvestre09

XLDnaute Nouveau
Re : Remplir un Tableau a partir d'un autre tableau selon des conditions (VBA)

slt j'ai fait plusieur test en fait si jours >12 il prend la bonne date si jours <=12 ilremplace le mois par le jour donc je pense que c'est un soucis de paramétrages y'a pas d'astuce pour contourner ça ?
 

Discussions similaires

Statistiques des forums

Discussions
312 195
Messages
2 086 082
Membres
103 113
dernier inscrit
jlaussenac