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)

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
 

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 )
 

Pièces jointes

  • oukilestleprob2.zip
    10.5 KB · Affichages: 79

Vorens

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

Re,

Je te rappel que je me base sur ton fichier exemple que t'as post sur le forum. Je sais que tu utilise un autre fichier donc le code peut être à adapter. Tu utilise également la fonction with se qui est très bien mais il faut que tu soit certain que ce soit la bonne feuille qui est sélectionnée => With Sheets(occurs) si non, le code va aller chercher les infos n'importe ou.

Edit: je sais pas non plus si tu travail sur plusieurs fichier Excel en même temps mais dans le code, le classeur n'est pas spécifier donc attention à ne pas afficher un autre classeur en premier plan (par défaut quand pas spécifier VBA prend le classeur actif à l'écran (ActiveWorkbook))
 
Dernière édition:

sylvestre09

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

Merci pour tes conseils Vorens! j'arrive pas a afficher ton fichier zip (restriction...) de toute facon je vais essayer encore une fois pour le tri ! je travaille effectivement sur un seul classeur ! en fait dans le code que j'ai copier je me suis trompé car avec ce code ca bloque à ce niveau
Code:
 .Range("V3" & ":" & "Y" & ValTabResultNeg).Select
        Selection.Sort Key1:=Range("W3" & ":" & "W" & ValTabResultNeg), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortTextAsNumbers
il m'affiche une erreur 1004 la methode select de la classe range à echoué et quand j'enléve le point "." devant le Range ca passe mais ca ne fait pas le tri !! je crois que c'est à cause de ca d'ailleurs car avec la fonction With il faut ajouter les point non ?
 

Vorens

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

Re

Suis dans le train en mode iPhone je peux plus coder mais pour rep, oui en théorie faut le point après t as test de spécifier la feuille sur cette ligne de code ?

J y pence Mnt mais j ai plus le code suis les yeux, y a un with qui pren tout le code et y me semble qu il est répéter just avant la fonction de tri. J ai jamais test mais peut être que doubler le with peut poser problème. Essais d enlever le with qui englobe les ligne qui trie pour voir
 

sylvestre09

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

je viens de spécifier la feuilles en enlevons le with et en le laissant ca bloque j'ai deja essayer sans le with et sans le nom de la feuille mais ca ne marche tjr pas :/
 

Vorens

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

Re,



Je commence à être a court d'idée... Tu peux pas m'envoyer le fichier je suppose à cause des données car sans pouvoir tester moi même sa va être difficile.

Au pire tu me l'envoie par Message priver mais bon, faut avoir la confiance :/.

Dans un premier temps copie moi déjà ton code sur le fofo en l'état, voir si j'arrive a reproduire l'erreur.

On va trouver, faut garder la foie ¨! xD
 

manu56

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

Bonjour Sylvestre09 et Vorens,

je viens vous soumettre une petite requête qui ressemble un peu à la demande de Sylvestre09.
je n'ai pas besoin de tri, j'ai besoin de remplir un tableau à la bonne ligne en fonction du numéro saisi en (D;5).
je ne suis pas très à l'aise avec VB pour la fonction de mon bouton 'Valider', si vous pouviez m'aider ce serait sympa.

@+ manu
 

Pièces jointes

  • exemple.xls
    46.5 KB · Affichages: 71
  • exemple.xls
    46.5 KB · Affichages: 87
  • exemple.xls
    46.5 KB · Affichages: 80

Vorens

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

Salut manu,

Copie colle ce code dans ta macro du bouton validé

Code:
ValTrouve = Sheets("SAISIE").Range("D5").Value



Set CelTrouve = Sheets("Listing").Range("B:B").Find(what:=ValTrouve)



If CelTrouve Is Nothing Then

MsgBox ("Cette valeur est introuvable")

Else

AddressCell = CelTrouve.Row




Sheets("Listing").Range("D" & AddressCell).Value = Sheets("SAISIE").Range("G5").Value
Sheets("Listing").Range("E" & AddressCell).Value = Sheets("SAISIE").Range("H5").Value
Sheets("Listing").Range("F" & AddressCell).Value = Sheets("SAISIE").Range("I5").Value

End If

A ploush
 

sylvestre09

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

Bonjour :) Verons regarde ce code
Code:
Option Base 1
Sub test()
    Dim c As Range, Tabl(12) As String, Ctr As Double
    Dim Ligne As Long, LigneDeb As Long, LigneCred As Long
    Ligne = 2
    For Each c In Range([E4], Cells(Rows.Count, 5).End(xlUp))
        Tabl(Month(c.Value)) = "X"
    Next c
    For i = 1 To 12
        Ctr = 0
        If Tabl(i) <> "" Then
            Ligne = Ligne + 2
            Cells(Ligne, 26) = DateSerial(2012, i, 1)
            Cells(Ligne, 26).NumberFormat = "mmm-yyyy"
            LigneDeb = Ligne
            LigneCred = Ligne
            For Each c In Range([E4], Cells(Rows.Count, 5).End(xlUp))
                If DateSerial(Year(c.Value), Month(c.Value), 1) = Cells(Ligne, 26) Then
                    If c.Offset(, 2) > 0 Then
                        Cells(LigneCred, "AA") = Cells(c.Row, 3)
                        Cells(LigneCred, "AB") = Cells(c.Row, 5)
                        Cells(LigneCred, "AC") = Cells(c.Row, 8)
                        Cells(LigneCred, "AD") = Cells(c.Row, 7)
                        Ctr = Ctr + Cells(c.Row, 7)
                        LigneCred = LigneCred + 1
                    Else
                        Cells(LigneDeb, "V") = Cells(c.Row, 3)
                        Cells(LigneDeb, "W") = Cells(c.Row, 5)
                        Cells(LigneDeb, "X") = Cells(c.Row, 8)
                        Cells(LigneDeb, "Y") = Cells(c.Row, 7)
                        Ctr = Ctr + Cells(c.Row, 7)
                        LigneDeb = LigneDeb + 1
                    End If
                End If
            Next c
            Cells(Ligne + 1, 26) = Ctr
            Cells(Ligne + 1, 26).NumberFormat = "General"
            Ligne = Application.Max(LigneCred, LigneDeb)
        End If
    Next i
End Sub

ca fonctionne bien quand je l'execute sur une feuille du coup j'essaye d'integrer la fonction With pour que ca marche sur tous les onglets mais bon je n'y arrive pas et enfin ce code ne fonctionne que pour l'année en cours t'as pas une idée pour le modifier ( si la date d'echéance est supérieur au 31-12-12 ca ne marche pas )
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 945
Membres
101 849
dernier inscrit
florentMIG