Récupération de données avec comparaison d'un champ

moteurV12

XLDnaute Occasionnel
Bonjour,

Tout d'abords je precise que je suis totalement nul en vba et que je debute. :pt1cable:

j'ai un fichier principal " suivi complet " sur lequel je travaille tous les jours ( ajout de lignes, suppressions de lignes, modifications de valeurs de cellules et commentaires n'importe où dans le fichier )

Ce fichier est copié tous les jours ( aprés filtrage sur 1 critère, verrouillage de certaines colonnes, suppressions de colonnes confidentielles) sur un serveur ftp afin que les personnes concernés puisque remplir les colonnes non vérouillée les concernant, puissent ajouter des commentaires etc )

Les colonnes accessibles en écriture sont toujours X,Z,AB,AD,AE,AF,AG,AI,AK,AM,AO,AQ,AS,AU,AW,AX,AY,AZ,BA,BB,BC,BD,BE,BF,BG,BH sur le fichier que l'on va appelé Bill.

le fichier d'origine comporte au début un colonne en plus, supprimée lors du transfert, donc par exemple la colonne X en "Bill" est la colonne Y en "suivi complet"
Il comporte aussi pas mal de colonnes supplémentaires en fin.

la colonne A du fichier "Bill" comporte une numérotation de ligne et c'est la colonne B en "suivi complet"

le Problème

je souhaiterai récupérer chaque jour les valeurs et commentaires (copy) de "Bill" et les retranscrire dans le fichier maitre en comparant la valeur Ax de bill à Bx de suivi complet
et si Ax = Bx
alors copy des cellules concernées de la ligne, et surtout pas de la ligne complète.
je rappelle que des lignes peuvent avoir été supprimées n'importe ou et d'autres ajoutées en fin tous les jours sur le fichier maître

Voilà j'espere avoir été assez clair. sinon je répondrai à vos interrogations subsidiaires.
Cela fait 15 jours que je planche sur ce probleme et je n'arrive pas à récuperer à la fois les cellules et les coms.

Autres précisions qui a peut être son importance, à terme c'est une trentaines de fichiers que je devrai récupérer situés dans différents répertoires utilisateurs du serveur FTP.

Voili, Voilà

Merci de venir à mon secours :)
 

skoobi

XLDnaute Barbatruc
Re : Récupération de données avec comparaison d'un champ

Tu peux de la même manière créer un tableau pour les mots de passe après "ListeFichier" en veillant à respecter l'ordre du premier:

ListeFichier = Array(".........)
ListMDP = Array("PRAT01K","PRAT01W","KBD02P",etc......)
For i = LBound(ListeFichier) To UBound(ListeFichier)
FileDir = FilePath & ListeFichier(i)
Workbooks.Open Filename:= _
FileDir, Password:=ListMDP(i)



 

moteurV12

XLDnaute Occasionnel
Re : Récupération de données avec comparaison d'un champ

C'est trés gentil à toi
je suis en train d'éplucher le code pour m'imbiber et assimiler les fonctions que tu as utilisé.

j'étais au désespoir, tu m'as donné des ailes.;)
 

moteurV12

XLDnaute Occasionnel
Re : Récupération de données avec comparaison d'un champ

Compte tenu de ce que je viens d'apprendre je vais m'attaquer à refaire le code de la page "General" et créer par exemple un bouton pour créer tous les fichiers " Merchandisers" sur le Field:=4, d'un coup.

je pense qu'en tirant profit de ce que tu viens de me montrer, je devrais y arriver.

je te salue bien bas et te tiens au courant


Champagne pour SkooBi
 

moteurV12

XLDnaute Occasionnel
Re : Récupération de données avec comparaison d'un champ

Salut

Bon bé je croyais m'en sortir alors j'ai pensé à créer une listbox avec tous les Merchandisers ( 17) afin de supprimer les boutons cliquables de la page générale.
Suffit de cocher celui choisi pour envoyer la creation du fichier xls.

J'au du rater un truc ca fonctionne pas. j'ai surement voulu en faire trop d'un coup.
Enfin bref voici le code boiteux

Option Explicit

Dim FileDir As String
Dim nom As String
Dim Filenumber As String
Const MotdePasse = "moustike"
Const FilePath = "C:\Documents and Settings\JEAN_MICHEL\Bureau\" '<<< Change this to your directory
Const FileOri = "C:\Documents and Settings\JEAN_MICHEL\Bureau\" '<<< Change this to your directory
'créer à la volée une boite de dialogue Excel 5 pour proposer plusieurs possibilités de choix

Sub ChoixOptions()

Dim i As Integer
Dim TopPos As Integer
Dim PrintDlg As DialogSheet
Dim cb As OptionButton
Dim Choix1, Choix2, Choix3
Dim ArrChoix As Variant
Dim ListMDP As Variant
Dim PaysChoix As Variant

Application.ScreenUpdating = False

' Ajoute une feuille de dialogue temporaire
Set PrintDlg = ActiveWorkbook.DialogSheets.Add

' Ajoute les boutons d'option
ArrChoix = Array("", "Isaac", "Jenny", "Mission", "Moman", "Prabha", "Sandeep", "KALED", _
"PUSHPA", "AWENY", "KUMAR", "MING", "DENG JIE", "SUZAN", "DIAPENIE", "ANAND", "PAUL", "Bill")

TopPos = 40
For i = 1 To 17
PrintDlg.OptionButtons.Add 78, TopPos, 80, 16.5
PrintDlg.OptionButtons(i).Text = ArrChoix(i)
TopPos = TopPos + 14
Next i

' Positionne les boutons OK et Annuler
PrintDlg.Buttons.Left = 200

' Dimensionne la hauteur, la largeur et le titre de la bte de dialogue
With PrintDlg.DialogFrame
.Height = Application.Max(90, PrintDlg.DialogFrame.Top + TopPos - 24)
.Width = 200
.Caption = "Choisissez le Merchandiser"
End With

' Change l'ordre de tabulation des boutons OK et Annuler
' afin de donner le focus au premier bouton d'option
PrintDlg.Buttons("Button 2").BringToFront
PrintDlg.Buttons("Button 3").BringToFront
PrintDlg.Show


' récupération du choix effectué
For i = 1 To 17
If PrintDlg.OptionButtons(i).Value = xlOn Then
Choix1 = PrintDlg.OptionButtons(i).Text

End If
Next
If Choix1 = "" Then
MsgBox "Aucun choix n'a été fait"

Else

' liste dans le même ordre des pays

PaysChoix = Array("", "INDEFF\", "Chine\", "Bangladesh\", "Bangladesh\", "INDEFF\", "Inde\", "Bangladesh\", _
"Bangladesh\", "Chine\", "Inde\", "Chine\", "Chine\", "Chine\", "Chine\", "Inde\", "Bangladesh\", "Chine\")

' liste dans le même ordre des mots de passe

ListMDP = Array("", "PRAT01W", "CCN03J", "SBD02P", "KBD02P", "PRAT01K", "KTI05S", "DBD02I", "YBD02P", "OCH10L", "KTI04K", "OHK06M", "OSH07D", "KCH08S", _
"KCH09A", "MUI11A", "WBD02L", "OCH12W")

Choix2 = PaysChoix(i)
Choix3 = ListMDP(i)

' Supprime la feuille de dialogue temporaire (sans message d'avertissement)

Application.DisplayAlerts = False
PrintDlg.Delete


' sauvegarde

Cells.EntireColumn.AutoFit
ActiveWorkbook.Save
nom = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "_" & Hour(Time) & " Heure " & ActiveWorkbook.Name
ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & nom

' Filtre sur le Merchandiser
Selection.AutoFilter Field:=4, Criteria1:=Choix1

' Efface les pages inutiles et les colonnes inutiles

Sheets(Array("Master", "Livres et Annules", "Liste dossiers", "Suivi Echantillons" _
, "Suivi Production", "Suivi Commissions")).Select
Sheets("Master").Activate
ActiveWindow.SelectedSheets.Delete


Columns("BJ:BY").Select
Selection.Delete Shift:=xlToLeft
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft



ActiveWindow.LargeScroll ToRight:=1
Range("X4").Select
Cells.EntireColumn.AutoFit

ActiveSheet.Protect Password:=MotdePasse, DrawingObjects:=False, Contents:=True, Scenarios:= _
True


FileDir = FilePath & Choix2 & Choix1 & ".xls"

'Saves file.
'-----------
'
SaveAs Filename:=FileDir, Password:=Choix3
Application.DisplayAlerts = True

Workbooks.Open FileOri & "SUIVI COMPLET" & ".xls"
Worksheets("General").Activate

Workbooks(Choix1 & ".xls").Close SaveChanges:=True

End If

End Sub

la macro ce met en erreur sur SaveAs Filename:=FileDir, Password:=Choix3 en disant sub ou Fonction non définie alors que rien ne c'est passé et la liste de choix ne s'affiche même plus ???
 

moteurV12

XLDnaute Occasionnel
Re : Récupération de données avec comparaison d'un champ

Salut

J'ai mis le fichier en production et lorsque je lance la récupérations des données des fichiers enfant pour mettre à jour le fichier central " suivi complet " le programme tourne bien, on voit les fichiers enfants s'ouvrir, c'est long mais pas de problème.

Par contre quand je vérifie si la mise à jour c'est effectuée, aucune données n'a été écrite. ???

en test sur quelques cellules sur un seul fichier pourtant ca marche ?????

la rien n'est écrit.

Comprend pas
 

Discussions similaires