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 !
 

Fichiers joints

Vorens

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

Salut,

Si tu veux être guidé je te propose cela a codé (je connais pas ton niveau en programmation VBA tu as dit que t'etais pas un pro mais as tu des base ? )

Donc, tu peut parcourir ton tableau avec une macro. tester la valeur de ta colonne G

Exemple:

If G & ligne en cours < 0 then

Range la ligne dans le tableau neg

Else

range la ligne dans le tableau pos

end if


Puis, t'as plus qu'a faire un tris sur la colonne des dates et c'est tout bon.

Voila dans les grandes lignes si tu veux t'amuser a coder cela pour apprendre c'est le top. Si non, quelqu'un peut te faire la solution toute prete.

Meilleures salutations
 

sylvestre09

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

slt Vorens merci pour ton retour, je suis debutant en vba d'habitude je cherche sur la toile et j'essaie de comprendre et d'adapter les codes que je trouve ! bon là je vois que tu n'as pas ouvert le fichier donc t'as pas bien compris ce que je veux ( j'avoue que je n'arrive pas à expliquer bien d'aileurs mes besoins ) bref je dois remplir le 2 ieme tableau par plusieurs parametres mais il faut en meme temps faire le tri pour avoir les opérations de chaque mois en face pour ensuite faire une boucle pour executer la macro sur tous les onglets !!
Merci encore
 

Vorens

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

Re,

Si j'ai ouvert ton fichier et on y trouve 2 feuilles (faut être prècis sur les termes, si on parle pas tous la meme langue c'est cauh de ce comprendre)

Résumé pour Excel

page sa existe pas, il ya des classeur = fichier

feuille = onglet = (si on veux page)

Si non, avant j'avais pas trop le temps de look mais la, pauser a la maison, n'a le temps.

Donc, Si j'ai bien compris tu veux faire la synthèse de ton tableau initiale ( feuille 1) et le résultat serais le tableau qui se trouve en feuille deux.

Après on est pas devin (malheureusement), tu parle de condition dans ton titre, quelles sont elles ?

Dans ton dernier post tu parle de remplire un tableau selon des paramètres ? quels paramètres ? un paramètre = en-tête de colonne de ton tableau ?
 

sylvestre09

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

slt Vorens c'est super gentil de ta part !
oui tu as raison je me trompe toujours en disant page !
en fait ce que tu vois dans l'onglet "feuil2" c'est le resultat que je cherche a avoir dans l'onglet "feuil1" a partir de la colonne V !
si tu remarques bien dans l'onglet "feuil2" les opérations sont classées selon leur date d'échéance et selon leur valeur (pret ou emprunt)
maintenant si on rajoute une autre opération (nvlle ligne) avec une date d'echeance egale 12-12-12 ce que je veux c'est qu'en lancant la macro cette opération va prendre ca place dans le tableau(pret/emprunt) en inscrivant dans la colonne Z le mois de decembre et ainsi de suite a chaque fois que j'entre une opération via le userform cette opération va s'installer dans le tableau de base et ensuite en grace a la macro elle va dans le tableau (p/e) en prenant sa place selon la valeur et la date d'echeance !! est ce plus clair :s ?
 

Vorens

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

Re,

Ue c'est ce que j'avais compris

Je te concocte une proposition et on regarde si elle va

Pour ce qui est du classement c'est le plus petit des probleme, suffis d'incérmenter et trier à la fin
 

Vorens

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

Reuuh,

Voila j'ai fini a voir si sa convient.

La macro re ecrit le tableau complet a chaque exeuction donc sa incrémente correctement. J'ai pas fait tout les tests donc y te faut look si les données sont bien correcte. Il faut just faire attention car sa prend pas en chanrge certain format sur les date

Exemple: Toute tes dates était sous format 12.03.2012

et une avait le format 12/12/2012, bah avec ce format sa marche pas le tri donc bien garder le premier format tout le temps ( d'ailleur j'ai changer le format de la date qui allais pa c'etait le 31/04/2012 et meme apres changement de format il arrive pas a le classer comme il faut je sais pas pourquoi. Bref tout sa pour dire, éviter les formats différente

Fichier en pièce jointe (suffi de clic le bouton)
 

Fichiers joints

sylvestre09

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

slt Vorens un grand merci pour toi ! a priori je ne peux pas tester tes macros car j'ai pas la meme version chez moi (excel10) donc je te tiens au courant !! mais a priori j'ai vu dans ton code "xlonvalues" dans le tri je me rappel que ca ne marchait pas dans excel 2003 mais bon on verra le lundi :) aller bon week end a toi !!!
 

Vorens

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

Re,


Ah ue après c'est possible que y'a des prob entre version mais la ligen qui marche pas va être très clairement indiquée et ce problème ne va pas nous embéter longtemps.

A lundi =)
 

sylvestre09

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

Bonjour Vorens
stp peux-tu enregistrer le classeur sous la version 2003 ( je pense que c'est possible avec ta version : enregistrer sous et la dans la petite fenetre deroulante choisis classeur excel 97-2003 ) car je n'arrive pas a l'ouvrir sur mon poste :(
Merci d'avance
 

sylvestre09

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

slt
bon comme prévue ca bloque au niveau du tri ! et puis je veux bien que le resultat soit a coté du tableau comme dans l'exmple (feuil1 colonne V) je suppose que je pourrai modifier par contre pour les dates j'aurai aimé séparer les opération de chaque mois c'est à dire que pour le mois de mars j'aurais les valeur pos et neg en face en suite le mois suivant pareil .... est ce que c'est difficile à faire ??
 

Vorens

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

Re,


Met les ligne suivante en commentaire

Code:
'Dimention final nouveau tableau

DebuNegRes = 2
FinNegRes = ValTabResultNeg


ActiveWorkbook.Worksheets("Result").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Result").Sort.SortFields.Add Key:=Range("B2" & ":" & "B" & ValTabResultNeg) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    
    With ActiveWorkbook.Worksheets("Result").Sort
        .SetRange Range("B2" & ":" & "D" & ValTabResultNeg)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With


'Trier tableau pos


DebuNegRes = 2
FinNegRes = ValTabResultPos

ActiveWorkbook.Worksheets("Result").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Result").Sort.SortFields.Add Key:=Range("H2" & ":" & "H" & ValTabResultPos) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    
    With ActiveWorkbook.Worksheets("Result").Sort
        .SetRange Range("G2" & ":" & "J" & ValTabResultNeg)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub
sa enlève la partie tris. Fait un enregistrement de macro et fait le tri manuellement. Apres il faut regarde le code générer et adapter ma macro avec la syntaxe 2003. (copie moi le code généré si tu vois pas comment le modifier

Pour l'autre question, c'est pas très dur ce que tu recherche mais sa rajoute des tests à droite à gauche. Sa prend surtout un peut de temps et c'est souvent ce qu'il fait défaut.

Je te propose d'essayer de rajouter des tests car avec le code fourni t'as déjà presque tout. Apres je reste à dispo en cas de problème de syntaxe ou d'idée mais malheureusement je ne peux pas consacré trop de temps à réaliser un projet complet. On est surtout la pour donner des idées et corriger des problème.

Dans un premier temps, il faut régler le prob du tri. Puis ensuite faire la distinction des mois, A froid comme sa il faut tester la colonne des date et voir quand le mois change. Puis après prendre toutes les lignes du mois en cours (exemple mars donc prendre toutes les lignes du mois de mars) et les copier dans une autres feuille ( on va éviter le stockage dans un array vu que tu connais pas forcement bcp VBA, sa va te permette de vérifier les infos.

Une fois que tu aura réussi à isoler un mois complet dans ton tableau, on passera à la suite.

J'ajoute que sur Excel on peux aller très loin, mais au début sa prend du temps et si tu veux un truc bien roder il faudra que tu le développe toi avec notre aide pour des bout de code et des fonctions qui peuvent être plus complexe mais la majorité des membre du forum ont pas le temps de créer une solution complète.
 

sylvestre09

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

oui Veorens je sais très bien !!! je te remercie infiniment pou le temps que tu m'as consacré !! bon j'abuse un peu car je n'ai pas trop le choix :(
voilà ce que l'enregistreur me donne :
Code:
 Range("V2:Y4").Select
    Selection.Sort Key1:=Range("W2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortTextAsNumbers
    Range("AA2:AD8").Select
    Selection.Sort Key1:=Range("AB2"), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortTextAsNumbers
End Sub
 

Vorens

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

Re,

Dsl pour le retard, pause midi et séance oblige


remplace le code que je t'ai montrée précédemment (la partie qui trie) par celui-ci

Code:
ActiveWorkbook.Worksheets("Result").Activate
 Range("A2" & ":" & "D" & ValTabResultNeg).Select
    Selection.Sort Key1:=Range("B2" & ":" & "B" & ValTabResultNeg), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortTextAsNumbers
        
        
'Trier tableau pos


DebuNegRes = 2
FinNegRes = ValTabResultPos





ActiveWorkbook.Worksheets("Result").Activate
 Range("G2" & ":" & "J" & ValTabResultNeg).Select
    Selection.Sort Key1:=Range("H2" & ":" & "H" & ValTabResultNeg), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortTextAsNumbers

Norms ça devrais jouer
 

sylvestre09

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

slt Vorens dsl de t'embêter mais ca ne fonctionne pas du tt !! comme je t'avais dit moi je travail sur plusieurs feuilles a la fois (occurs) là j'arrive grace a toi a remplir les tableau parcontre le tri ne fonctionne pas :s
Code:
With Sheets(occurs)
    
R = "Ref"
DateEche = "DateEchéance"
Montant = "Montant"
taux = "Taux"

'Dim du tableau (basé sur colonne G)

DebTab = .Range("G4").Row
finTab = .Range("G65535").End(xlUp).Row

'Trie du tableau en fonction des valeurs

 ValTabResultNeg = 4
 ValTabResultPos = 4

For i = DebTab To finTab

'Trouver l'adresse des informations
            With Sheets(occurs).Range("3:3")
            
            Set A = .Find(R)
            Set B = .Find(DateEche)
            Set C = .Find(Montant)
            Set D = .Find(taux)
            
            End With

A = Split(A.Address, "$")(1)
B = Split(B.Address, "$")(1)
C = Split(C.Address, "$")(1)
D = Split(D.Address, "$")(1)

    If .Range("G" & i).Value < 0 Then
    
    
    
    'Ecriture tu tableau
    
     .Range("V" & ValTabResultNeg).Value = .Range(A & i).Value
     .Range("W" & ValTabResultNeg).Value = .Range(B & i).Value
     .Range("X" & ValTabResultNeg).Value = .Range(C & i).Value
     .Range("Y" & ValTabResultNeg).Value = .Range(D & i).Value
     
    ValTabResultNeg = ValTabResultNeg + 1
    
    Else
    
     .Range("AA" & ValTabResultPos).Value = .Range(A & i).Value
     .Range("AB" & ValTabResultPos).Value = .Range(B & i).Value
     .Range("AC" & ValTabResultPos).Value = .Range(C & i).Value
     .Range("AD" & ValTabResultPos).Value = .Range(D & i).Value
    
    
    ValTabResultPos = ValTabResultPos + 1
    
    End If
    Next
    
    'Dimention final nouveau tableau
    
        With Sheets(occurs)

        DebuNegRes = 3
        FinNegRes = ValTabResultNeg
    

        .Range("V3" & ":" & "Y" & ValTabResultNeg).Select
        Selection.Sort Key1:=Range("W3" & ":" & "W" & ValTabResultNeg), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortTextAsNumbers
        
        
        'Trier tableau pos


        DebuNegRes = 3
        FinNegRes = ValTabResultPos


        .Range("AA3" & ":" & "AD" & ValTabResultNeg).Select
        Selection.Sort Key1:=Range("AB3" & ":" & "AB" & ValTabResultNeg), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortTextAsNumbers
     
        End With

    
    End With
 

Vorens

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

Re,

Quel est le message d'erreur ?
 

sylvestre09

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

aucun !!!! mais le tri ne s'effectue pas en plus il me selectionne une partie d'une feuille "acceuil" là ou il y'a les boutons de commandes , il me selectionne des celleule AA3:AD7 !!!
 

Vorens

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

Re,

Je copie / colle le code que tu m'a link

et j'ai sa comme résultat ( voir feuille annexe)

Bah sa trie >< sauf le 31-04-2012 mais sa doit venir d'un prob dans le tableau source ( format ou je sais pas quoi )
 

Fichiers joints

Discussions similaires


Haut Bas