traitement de données trés complexe !!!

babelone

XLDnaute Occasionnel
Bonjour a tous,

J'ai quelque chose de complexe a faire (en tout cas pour moi !)

J'ai une feuille,dans cette feuille,les colonnes de A à AD contiennent des données d'une autre feuille,qui sont en attente de traitement.

Toutes ses données,doivent être traitées par lot de 20,10 ou 250 en fonction d'un numero de fournisseur.

Ce que je souhaiterai,c'est extraire de cette feuille(demande RMA),dés que j'ai 20 dossier pour un code fournisseur déterminé,pour les mettre dans la feuille (demande AR).

ci joint le lien du fichier,en esperant avoir expliqué correctement
Merci de votre aide .

Free - Envoyez vos documents

encore merci a tout ceux qui voudront bien se pencher sur mon probleme
 

babelone

XLDnaute Occasionnel
Re : traitement de données trés complexe !!!

Bobsoir Skoobi,

Oui ,j'ai passé un bon Noel et toi ?

Voici le lien du fichier au complet .

serait il possible que tu jettes un oeil sur la macro " supprimer doublon"
Car je suis obligé a chaque mis a jour de la ranlancer sur chaque feuil
c'est aussi pour cela que j'ai du rajouter un bouton sur toutes les feuil

http://dl.free.fr/ueYTkHdcR

Merci a toi
 

skoobi

XLDnaute Barbatruc
Re : traitement de données trés complexe !!!

Re,

pour ajouter le N° de colis dans l'USF attente AR voici le code du bouton extraire avec l'ajout en bleu (je te laisse créer le textbox colis):

Code:
..........
....
'on quitte la boucle si le nombre de demande voulues est atteint
  If I = Nbre Then Exit For
Next
[COLOR=Blue][B]'on ajoute le N° de colis colonne AE
For I = 2 To Nbre + 1
  Columns("AE").SpecialCells(xlCellTypeVisible).Areas(1).Item(I).Value = TextBox1.Value
Next[/B][/COLOR]
'on transfert vers "expedition"
'recherche de la ligne suivante pour compléter la liste
With Sheets("expedition")
  LigSuiv = .Range("A65536").End(xlUp).Row + 1
.....
..........
serait il possible que tu jettes un oeil sur la macro " supprimer doublon"

il faut "boucler" les feuilles concernées:
Code:
Sub DeleteDouble()
  Dim Plage As Range, Cel As Range
  Dim Col As New Collection, ASupprimer As Range
  'de la feuille 5 à 8
  For n = 5 To 8
    With Sheets(n)
      .Range("A1:AF65536").Sort Key1:=.Range("A1"), Order1:=xlAscending, Header:= _
                               xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
                               DataOption1:=xlSortNormal
      Set rRange = .Range(.[A1], .[A1].End(xlDown))
      For Each rCell In rRange
        Do While rCell = rCell.Offset(1, 0)
          rCell.Offset(1, 0).EntireRow.Delete
        Loop
      Next rCell
    End With
  Next
End Sub

Bon dimanche

PS: j'ai passé un très bon moment en famille :)
 

skoobi

XLDnaute Barbatruc
Re : traitement de données trés complexe !!!

Re bonjour,

petite erreur pour ajouter le N° de colis.
Remplace:
Code:
  For I = 2 To Nbre + 1
    Columns("AE").SpecialCells(xlCellTypeVisible).Areas(1).Item(I).Value = TextBox1.Value
  Next
par ceci:
Code:
  I = 0
  For Each NumRMA In Columns("AD").Range("AD2", Range("AD65536").End(xlUp)).SpecialCells(xlCellTypeVisible)
    I = I + 1
    Range("AE" & NumRMA.Row).Value = TextBox1.Value
    If I = Nbre Then Exit For
  Next
 

babelone

XLDnaute Occasionnel
Re : traitement de données trés complexe !!!

Bonsoir Skoobi,
je viens de changer le code,lorsque je fais une extraction de 20 articles par 20 articles,et que j'indique un N° de colis,il me met bien le N° de colis correspondant mais uniquement dans "AE1" et non pas sur les 20 lignes colonne AE selectionné
 

babelone

XLDnaute Occasionnel
Re : traitement de données trés complexe !!!

Bonsoir Skoobi,
je viens de changer le cde,mais lorsque je fais 1 demande d'extraction par lot qui correspond a l'USF ARF-->AR,il met le N° de Colis uniquement dans col AE1
et non pas sur les 20 lignes correspondant au 20 dosret choisis.
 

skoobi

XLDnaute Barbatruc
Re : traitement de données trés complexe !!!

Arfff, ok, c'était un exemple.
Dans ce cas, par du dosret colonne A je crois:

I = 0
For Each DosRet In Columns("A").Range("A2", Range("A65536").End(xlUp)).SpecialCells(xlCellTypeVisible)
I = I + 1
Range("AE" & DosRet.Row).Value = TextBox1.Value
If I = Nbre Then Exit For
Next
 

babelone

XLDnaute Occasionnel
Re : traitement de données trés complexe !!!

Je viens de modifier,cette fois ci rien dans la colonne AE ???

voici le code dans USF ARF_AR

If I = Nbre Then Exit For
Next
I = 0
For Each DosRet In Columns("A").Range("A2", Range("A65536").End(xlUp)).SpecialCells(xlCellTypeVisible)
I = I + 1
Range("AE" & DosRet.Row).Value = TextBox1.Value
If I = Nbre Then Exit For
Next

'on transfert vers "Attente AR"
'recherche de la ligne suivante pour compléter la liste
 

skoobi

XLDnaute Barbatruc
Re : traitement de données trés complexe !!!

Re,

tu peux intégrer l'ajout du n° de colis dans la boucle existante dans l'USF ARF_AR et augmenter jusqu'à la colonne AE (31), pour la récupération:
J'ai testé, ça doit marcher.
Code:
.....
..........
  'pour chaque "Elmnt" allant de A2 à la dernière cellule non vide colonne A et visible
  'étant donné qu'il y a un filtre sur la feuille
  For Each Elmnt In Range([A2], [A65536].End(xlUp)).SpecialCells(xlCellTypeVisible)
    I = I + 1
[COLOR=Blue][B]    'on ajoute le N° de colis colonne AE
    Range("AE" & Elmnt.Row).Value = TextBox1.Value[/B][/COLOR]
    'on "stock" chaque ligne "Elmnt" (toute la ligne) dans une variable en vue de son traitement
    If LigTraite Is Nothing Then
      Set LigTraite = Elmnt.Resize(1, [COLOR=Blue][B]3[/B][B]1[/B][/COLOR])
    Else: Set LigTraite = Union(LigTraite, Elmnt.Resize(1, [COLOR=Blue][B]3[/B][B]1[/B][/COLOR]))
    End If
    'on quitte la boucle si le nombre de demande voulues est atteint
    If I = Nbre Then Exit For
  Next

...
.......
 
Dernière édition:

babelone

XLDnaute Occasionnel
Re : traitement de données trés complexe !!!

Bonjour le forum,bonjour Skoobi,
Voilà je souhaiterai faire plusieur filtre en prenant modèle sur un des codes Usf que tu m'as fournit dont voici l'exemple.

Private Sub Cbx_NumRMA_Change()
Sheets("CTRF").Select
Dim NbreDemande As Integer, Max As Integer
'on fait un filtre automatique sur le N° RMA
[AD2].AutoFilter Field:=30, Criteria1:=Cbx_NumRma.Value
'on récupère dans le textbox Tbx_NumColi le n° du colis pour ce N° de RMA
Tbx_NumColi.Value = [AE2].End(xlDown).Offset(0, 1).Value
Tbx_Dte.Value = [AB2].End(xlDown).Offset(0, 1).Value
'on récupère le nombre d'enregistrement suite au filtre
NbreDemande = Range("_Filterdatabase").Columns(30).SpecialCells(xlCellTypeVisible).Cells.Count - 1
'qu'on écrit dans le label Lb_Nbre
Lb_Nbre.Caption = NbreDemande & " Articles expédiés pour ce fournisseur dans ce colis."

End Sub

Je veux faire un filtre dans le même USF,sur le nom du fournisseur (H),une fois le tri fait dans une autre CBX je fait un filtre sur la Sous famille (I),
j'ai rajouté un for each ... mais lors du 1er filtre sur la feuil ctrf il n'y a + rien donc forcement le 2 eme filtre ne fonctionne pas par contre aucune erreur sur mon code .

peux tu m'éclairer !!!
 

skoobi

XLDnaute Barbatruc
Re : traitement de données trés complexe !!!

Bonjour babelone, meilleurs voeux pour 2009!

Je veux faire un filtre dans le même USF,sur le nom du fournisseur (H),une fois le tri fait dans une autre CBX je fait un filtre sur la Sous famille (I),
Dans ce cas tu crés les filtres à la suite:
Code:
'on fait un filtre automatique sur le fournisseur 
[[B]H[/B]2].AutoFilter Field:=[B]8[/B], Criteria1:=????.Value
'on fait un filtre automatique sur la Sous famille 
 [[B]I[/B]2].AutoFilter Field:=[B]9[/B], Criteria1:=????.Value

 

Discussions similaires

Réponses
11
Affichages
856

Statistiques des forums

Discussions
312 165
Messages
2 085 882
Membres
103 011
dernier inscrit
rine