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 !!!

Bonsoir le forum,bonsoir Skoobi,

Tout simplement genial, tu es génial !

C'est exactement çà,merci aussi pour les commentaiPour le mail pas de probleme,je l'ai deja fait et c'est bien moins compliqué que ce que tu viens de faire.

Un enorme merci,quand au pb d'ordi NO problemo ,je pourrai te rendre ce service avec plaisir,
peux tu suivre encore ce fil,j'ai autre chose a te demander,toujours pareil,mais je viens d'apprendre,que pour la marque arquos,il y a une matrice spécifique avec une colonne differente pour le N° de serie je ne l'ai pas là,mais je joindrai le fichier demain

Je t'enverrai mon mail perso sur un message privée au cas ou tu aurais un pb d'ordi

Merci enormement
 

skoobi

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

Re,

je viens d'apprendre,que pour la marque arquos,il y a une matrice spécifique avec une colonne differente pour le N° de serie je ne l'ai pas là,mais je joindrai le fichier demain

Avec les commentaires que j'ai mis dans le code ça devrait pouvoir t'aider à faire les modifications. Dans le cas contraire, refais-nous signe.

Je t'enverrai mon mail perso sur un message privée au cas ou tu aurais un pb d'ordi
Je plaisantais :p mais comme tu veux :cool:.

peux tu suivre encore ce fil
Bon aller, comme tu me donne ton adresse perso, je veux bien :D:D:p:p
 

babelone

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

Bonsoir le forum,bonsoir Skoobi,

Voilà,je suis désolé,ton prog fonctionne super bien et j'en suis super contant,mais le cahier des charges a changé,
et j'ai beau essayer d'adapter ton code,cela ne marche pas du tout !!!!
Et si j'abuse et que tu ne peux pas ,je comprendrai,

Voilà,toujours en partant de la base originale ,j'ai crée une feuil nommée
"ARF"(attente retour fournisseur.de la,on extrait les lignes vertes de la feuil CTRF(correspondant a OUI dans la colon AB)jusque là pas de PB si ce n'est que lorsque je relance ma macro il réextrait les lignes dejà extraite en + des nouvelles.
Ensuite j'ai crée un feuil "Attente AR" là j'utilise l'USF que tu as fait a la difference,qu'il ne faut plus le mettre en forme dans le tableau,mais supprimer les lignes de la feuil"ARF",pour les coller dans la feuil "Attente AR en fait,on passe de feuil en feuil jusqu'a le derniere qui est la feuil EXPEDITION de la on utilise de nouveau USF pour extrire par lot de 10,20,250 et on colle dans la matrice pour impression et expedition sans supprimer les ligne de la feuil expedition.
je suis vraiment désolé de te solicité de nouveau.

lien1: Free - Envoyez vos documents
lien2(explication ppt: Free - Envoyez vos documents

Merci
 

skoobi

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

Re bonsoir babelone,

L'important c'est que tu t'impliques et que tu essaye de comprendre, alors tu trouveras de l'aide ici ;).
J'ai créé l'USF pour le "passage" ARF-> attente AR.
Regarde et dis-nous.
Le code est très proche du premier sauf que l'on récupère toute la ligne (voir commentaire dans le code).
"attente AR" est complété au fur et à mesure des extractions, c'est ce que tu veux faire à ce stade je suppose.
Je pense (pas testé) que le premier USF marche pour expedition -> demande AR non?
on extrait les lignes vertes de la feuil CTRF(correspondant a OUI dans la colon AB)jusque là pas de PB si ce n'est que lorsque je relance ma macro il réextrait les lignes dejà extraite en + des nouvelles.
Si tu n'y arrive pas merci de préciser la macro concernée.

Si date de demande RMA (renseigné
dans base CTRF(Col AC)
Alors supprimer lignes vertes de Feuil Attente AR
Et les coller dans Feuil Expédition
Est-ce que tu copie la date dans la feuille attente AR?
A te relire.
 

Pièces jointes

  • Traitement CTRF.zip
    128.3 KB · Affichages: 194
  • Traitement CTRF.zip
    128.3 KB · Affichages: 68
  • Traitement CTRF.zip
    128.3 KB · Affichages: 67
Dernière édition:

babelone

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

Re bonsoir babelone,
Si tu n'y arrive pas merci de préciser la macro concernée.

Est-ce que tu copie la date dans la feuille attente AR?
A te relire.

Ce n'est pas faute d'avoir essayer,mais je n'y arrive pas,alors voici la macro:
Sheets("ARF").Range("A1").CurrentRegion.Offset(1, 0).Clear
With Sheets("CTRF")
For Each Y In .Range("A2:" & .Range("A65536").End(xlUp).Address)
If .Cells(Y.Row, 28) = "oui" Then
Y.Resize(1, 28).Copy (Sheets("ARF").Range("A65536").End(xlUp).Offset(1, 0))
End If
Next
End With
End Sub
Le probleme,il m'esxtrait bien les lignes si col AB=oui
mais quand je relance la macro,il réextrait ceux déja extrait en plus des nouvelles.
Pour le passage de Attente AR vers expedition,pas de probleme,j'utilise ton 1er USF.
maintenant,j'aimerai ton avis et ton aide !!!!
Lorsque l'on transfert les dosret dans la feuil Attente AR,on doit éffectuer une demande d'accord de retour au fournisseur pour ce lot de 2O.une fois le N° d'accord recu,je reprend la matrice imprimée avec les 20 que j'envois au fournisseur,serait il possble,quand je recois le N° de RMA qui sera renseigné dans CTRF col AD,que c'est 20 dossier soit Associé a ce N°.
si je fait un USF de recherche par N° de RMA,il m'affiche a l'identique la matrice,avec les 20 dossiers expediés .
et autre probleme,dans la demande de RMA,il ce peux,que le fournisseur refuse 1, 2 ou plus de dossier pour non conformité,comment je pourrait extraire,ses N° de dosret pour les repasser de la feuil expedition a la feuil attente AR .car sur le lot de 20,par ex si 2 dosret refusé,je peux lui envoyer les 18 restant .
Merci encore une fois pour tout et j'ai vraiment l'impression d'avancer grasse a tes commentaires.

et dernieres chose,que dois je modifier dans ton code si je veux extraire par lot de 10,20 ... et ensuite coller les colonnes dans la matrice pour impression
sachant que le premier code copy toutes les lignes alors que le 2eme ,copy que 6 col

En tous cas j'avance
 

skoobi

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

Re bonjour,

Je te suggère de voir une chose après l'autre.
Le probleme,il m'esxtrait bien les lignes si col AB=oui
mais quand je relance la macro,il réextrait ceux déja extrait en plus des nouvelles.
Pour éviter de ré-extraire, je te propose j'ajouter colonne AE de CTRF "Extraction ARF".
Ainsi, quand la copie vers ARF sera fait, on écrit "oui" dans cette nouvelle colonne afin d'éviter une nouvelle copie. Voici le code en conséquence:

Code:
Sub test()
  Dim Plage As Range, Y As Range
  With Sheets("CTRF")
  'on filtre sur "oui" pour panne constatée
    .[AB1].AutoFilter field:=28, Criteria1:="oui"
    For Each Y In .Range("A2:" & .Range("A65536").End(xlUp).Address).SpecialCells(xlCellTypeVisible)
    'si colonne extraction ARF est vide on cré/complète "Plage"
      If Y.Offset(0, 30).Value = "" Then
        If Plage Is Nothing Then
          Set Plage = Y.Resize(1, 28)
        Else: Set Plage = Union(Plage, Y.Resize(1, 28))
        End If
      End If
    Next
  'si "plage" n'est pas vide, on copie son contenu vers ARF, à la suite
    If Not Plage Is Nothing Then Plage.Copy Sheets("ARF").Range("A65536").End(xlUp).Offset(1, 0)
  'on écrit "oui" colonne extraction ARF
    .Range("AE2", .Range("AE" & .Range("AB65536").End(xlUp).Row)).SpecialCells(xlCellTypeVisible).Value = "oui"
  End With
End Sub

Edit: commentaires ajoutées
 
Dernière édition:

skoobi

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

Re,

serait il possble,quand je recois le N° de RMA qui sera renseigné dans CTRF col AD,que c'est 20 dossier soit Associé a ce N°.
si je fait un USF de recherche par N° de RMA,il m'affiche a l'identique la matrice,avec les 20 dossiers expediés

Comment renseignes-tu ce N° RMA dans CTRF?
A la main, avec un USF?
Si tu le fais avec un USF, tu renseignes ce N° également dans attente AR en faisant une recherche du dosret.
Voici un exemple de recherche supposant que la ligne du dosret dans CTRF est connu:

Code:
NumRMA = Sheets("CTRF").Range("AD" & [B][COLOR=Blue]Lig[/COLOR][/B]).Value
Dosret = Sheets("CTRF").Range("A" & [COLOR=Blue][B]Lig[/B][/COLOR]).Value
With Sheets("Attente AR")
  Set Trouve = .Columns(1).Find(Dosret, LookIn:=xlValues, lookat:=xlWhole)
  If Not Trouve Is Nothing Then Trouve.Offset(0, 29).Value = NumRMA
End With

A te relire,

Bon Dimanche.
 

babelone

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

Re,



Comment renseignes-tu ce N° RMA dans CTRF?
A la main, avec un USF?
Si tu le fais avec un USF, tu renseignes ce N° également dans attente AR en faisant une recherche du dosret.

A te relire,

Bon Dimanche.

Dans la feuil CTRF,on click sur Saisie cela ouvre USF menu,ensuite tu click sur secretariat(anciennement admin) dans recherche par N° de dosret ,tu colle un N° de dosret,tu click su "recherche par N° de dosret " et USF ce remplis des données de la feuil CTRF,c'est là que l'on ajoute les info manquante comme le N° de RMA
Pour ton code extraire de ctrf vers ARF,c'est nickel,j'ai juste rajouté 2 lignes de code pour une question de confort
Selection.EntireColumn.Hidden = False en début de code.
et les 2 suivants en fin de code
Selection.EntireColumn.Hidden = True
Selection.AutoFilter Field:=28
Le code que tu m'as envoyé,pour la recherche du N° RMA,je dois le mettre OU ?
 

skoobi

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

Bonjour babelone,

Ce que j'ai écris n'était qu'un exemple pour te guider!
En voyant le code, je vois que je suis pas loin de la vérité ;).
Voici ce qu'il faut ajouter (en bleu) dans le code du bouton VALIDER/MODIFIER:

Code:
......
...
If Admin.TextBox21.Value <> "" Then Sheets("CTRF").Cells(Ligne, "AA").Value = CDate(Admin.TextBox21.Value) 'Dte TEST
If Admin.TextBox22.Value <> "" Then Sheets("CTRF").Cells(Ligne, "AC").Value = CDate(Admin.TextBox22.Value) 'Dte TEST

[B][COLOR=Blue]'--------- complète dans "attente AR" le N° RMA si le dossier existe ----------

With Sheets("CTRF")
  NumRMA = .Range("AD" & Ligne).Value
  Dosret = .Range("A" & Ligne).Value
End With
With Sheets("Attente AR")
'on cherche dans la colonne A le dosret
  Set Trouve = .Columns(1).Find(Dosret, LookIn:=xlValues, lookat:=xlWhole)
  If Not Trouve Is Nothing Then
    Trouve.Offset(0, 29).Value = NumRMA
  Else: MsgBox "Le dossier " & TextBox1.Value & " n'a pas été trouvé dans attente AR!", vbExclamation
  End If
End With
[/COLOR][/B]
Unload Admin
......
...
 
Dernière édition:

babelone

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

Bonjour le forum,bonjour Skoobi,
Pas eu beaucoup de temps pour me connecter ce we !!!

J'avance,j'avance a grand pas grace a toi.
Par contre pour le code précedent,je 'nai pas bien compris a quoi il servait dans la recherche de du N° de RMA ?
Je l'ai mis en place dans USF admin comme indiqué ???
 

babelone

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

en fait j'ai étendue l'extraction jusqu'a la col N° RMA.

Lorsque je fait une extraction des 20 dosret,pour une demande de RMA,et que le fournisseur m'envois son N° accord de retour(RMA),y a t'il un moyen
pour mettre ce N° de RMA (col AD de la Feuil CTRF)dans la base sans le taper 20 fois puisque une demande de RMA = à 20 dosret ?

Et sur les 20 dosret,il se peut que le fournisseur,refuse 1,2 voir plusieur dosret ,comment puis je faire pour extraire,c'est dosret refusé(ligne entiere)
pour les mettre dans une feuile litige ?

J'ai modifié,ton USF,pour effectuer une recherche par RMA et imprimer les 20 dosret correspondant,çà marche du tonnerre
je ne te remercierais jamais assé ,car je commence enfin a comprendre et faire des choses par moi même.

Merci pour tout
Mais ce n'est pas encore finit,j'aurai certainement encore besoin de ton aide !!!
 

babelone

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

autre chose,si dans les USF des demande d'extraction,je ne remplis pas le champs, Nombre de demande,j'ai un BUG.

Y a t'il un moyen que la saisie soit obligatoire pour éviter ce genre de bug?
dans un autre USF,j'ai ce code que j'ai adapté ,j'ai bien le méssage qui apparait,mais j'ai une erreur "l'indice n'appartient pas a la selection"
je crois que c'est dû au tableau dans le code.


If Trim(Me.Tbx_NbreDemande.Value) = "" Then
MsgBox "Nombre manquant", vbInformation, "Saisie Obligatoire"
Exit Sub
End If
End Sub
 

skoobi

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

Re,

y a t'il un moyen
pour mettre ce N° de RMA (col AD de la Feuil CTRF)dans la base sans le taper 20 fois puisque une demande de RMA = à 20 dosret ?
Je m'y attendais :D.
Oui mais le soucis c'est que les 20 dosret se suivent dans la feuille attente AR mais pas dans CTRF....Donc celà veut dire qu'il faut écrire ce N° d'abord dans la feuille attente AR puis dans CTRF, par un filtre auto sur le N° fournisseur ou alors en cherchant le dosret (un peu le même genre de code que celui que je t'ai envoyé le 14/12). Tu me suis?

Et sur les 20 dosret,il se peut que le fournisseur,refuse 1,2 voir plusieur dosret ,comment puis je faire pour extraire,c'est dosret refusé(ligne entiere)
pour les mettre dans une feuile litige ?
Il y a quelque chose que je ne saisie pas. Dans le powerpoint tu dis que lorsque le N° RMA est connu tu le renseigne dans attente AR et CTRF.
Seulement après tu remplie la feuille Expédition non?
Donc si le fournisseur refuse un ou plusieurs dosret il faut je pense juste vérifier que le N° RMA soit présent avant le passage attente AR -> Expedétion. Celà t'évite de gérer une feuille litige en plus. Qu'en penses-tu?
Ou je fais fausse route?
autre chose,si dans les USF des demande d'extraction,je ne remplis pas le champs, Nombre de demande,j'ai un BUG.

Y a t'il un moyen que la saisie soit obligatoire pour éviter ce genre de bug?
Ton code devrait marcher, voici le même sans "Trim" (pas nécessaire):

Code:
If Tbx_NbreDemande.Value = "" Then
  MsgBox "Nombre manquant", vbInformation, "Saisie Obligatoire"
  Exit Sub
End If

A bientôt :)
 
Dernière édition:

babelone

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

Oui ok pour le code,mais le PB reste le même,puisque le N° de RMA n'est ni dans Attente AR ni dans CTRF,donc il faudra bien le saisir à un moment ou un autre et cela 20 fois ?

Si j'ai bien compris,Dans MENU,je recherche le N° de dosret,les info apparaisse,je met la dte de demande RMA,ainsi que le N° RMA,lorsque je valide,le code vérifie si le dosret existe dans la feuil Attente AR ,si oui il le rajoute.

A partir de là,en adaptant le code extraction CTRF-->AR,je peux extraire toutes les lignes qui ont un N° RAM vers la feuil expedition que je viens de créer ?

Dim Plage As Range, Y As Range
With Sheets("CTRF")
'on filtre sur "oui" pour panne constatée
.[AB1].AutoFilter Field:=28, Criteria1:="oui"
For Each Y In .Range("A2:" & .Range("A65536").End(xlUp).Address).SpecialCells(xlCellTypeVisible)
'si colonne extraction ARF est vide on cré/complète "Plage"
If Y.Offset(0, 30).Value = "" Then
If Plage Is Nothing Then
Set Plage = Y.Resize(1, 30)
Else: Set Plage = Union(Plage, Y.Resize(1, 30))
End If
End If
Next
'si "plage" n'est pas vide, on copie son contenu vers ARF, à la suite
If Not Plage Is Nothing Then Plage.Copy Sheets("ARF").Range("A65536").End(xlUp).Offset(1, 0)
'on écrit "oui" colonne extraction ARF
.Range("CE2", .Range("CE" & .Range("AB65536").End(xlUp).Row)).SpecialCells(xlCellTypeVisible).Value = "fait"
End With
End Sub

Sauf que là,je ferais le filtre sur la col N°RMA,ne connaissant pas le N°,puis je dire au code de s'executer si la cellule n'est pas vide si oui que l est il ?
quand elle est vide = "" mais quand il y a une données quelquonque = ?

Merci
 

Discussions similaires

Réponses
11
Affichages
856

Statistiques des forums

Discussions
312 161
Messages
2 085 848
Membres
103 004
dernier inscrit
ponas