Extraction de données de fichiers (vba excel)

Fermé
aprentizorrrr Messages postés 6 Date d'inscription lundi 21 juin 2010 Statut Membre Dernière intervention 1 juillet 2010 - Modifié par aprentizorrrr le 1/07/2010 à 16:31
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 1 juil. 2010 à 17:49
Bonjour, j'ai fait un bilan (bilan pointage2008test et bilan pointage2009test, feuille Bilan dans les 2 fichiers) annuels des heures de chaque affaires, les heures sont reparties en 2 group, SOFT et BEE, et par chapitre ( type de prestations).

donc sa apres une un casse tete et de l'aide j'ai reussi

maintentant j'ai un fichier planning_bilan heurestest ou il y a toutes les affaires des années, et par affaire une colonne BEE et une colonne SOFT
je voudrais extraire les heures BEE et SOFT avec chapitre="A02" de mes bilans, et remplire les colonnes de mon planning.
sachant qu'une affaire peut aparaitre dans le bilan 2008 et 2009

voici le code que j'ai faire pour faires mes bilan:
Option Explicit 
Sub Remplir_Bilan() 


Dim cellule  As Range 
Dim n°affaire As String 
Dim chapitre  As String 
Dim heures    As Integer 
Dim technicien As String 
Dim cellule_bilan As Range 
Dim x As Integer ' decalage de colonne 
Dim BE1 As String 
Dim BE2 As String 
Dim BE3 As String 
Dim BE4 As String 
Dim SOFT1 As String 
Dim SOFT2 As String 
Dim SOFT3 As String 
Dim SOFT4 As String 
Dim SOFT5 As String 
Dim SOFT6 As String 
Dim SOFT7 As String 
Dim SOFT8 As String 
Dim SOFT9 As String 
Dim SOFT10 As String 
Dim client As String 
Dim BE As String 
Dim SOFT As String 


   BE1 = "jojo" 
   BE2 = "lolo" 
   BE3 = "" 
   BE4 = "" 
    
   ' 10 SOFT prevuent de base, a remplire aux besoins 
   SOFT1 = "toto" 
   SOFT2 = "bobo" 
   SOFT3 = "koko" 
   SOFT4 = "gogo" 
   SOFT5 = "momo" 
   SOFT6 = "" 
   SOFT7 = "" 
   SOFT8 = "" 
   SOFT9 = "" 
   SOFT10 = "" 
   For Each cellule In Worksheets("Heures Imputees").Range("D2:D2600") 
    
    n°affaire = cellule.Value            '  On est en colonne D 
    chapitre = cellule.Offset(, 1).Value '  On est ici en colonne D+1 = E 
    heures = cellule.Offset(, 2).Value  '  On est ici en colonne D+2 = F 
    technicien = cellule.Offset(, -2).Value ' on est ici en colonne B 
    client = cellule.Offset(, -1).Value 
     
     
    x = 5 
    If chapitre = "A02" Then 
    Select Case technicien 
    Case BE1, BE2: x = 3 
    Case SOFT1, SOFT2, SOFT3, SOFT4, SOFT5, SOFT6, SOFT7, SOFT8, SOFT9, SOFT10: x = 4 
    End Select 
    End If 
     
    For Each cellule_bilan In Worksheets("Bilan").Range("A3:A65536") 
        If cellule_bilan.Value = n°affaire And cellule_bilan.Offset(, 2).Value = chapitre And cellule_bilan.Offset(, 1).Value = client Then 
         
            cellule_bilan.Offset(, x).Value = cellule_bilan.Offset(, x).Value + heures 
             
            ' // Penser à sortir 
            
            Exit For 
        End If 
         If cellule_bilan.Value = "" Then 
            ' // On arrive sur une ligne vide sans avoir trouvé 
            ' // --> Création 
            cellule_bilan.Value = n°affaire 
            cellule_bilan.Offset(, 1).Value = client 
            cellule_bilan.Offset(, 2).Value = chapitre 
            cellule_bilan.Offset(, x).Value = cellule_bilan.Offset(, x).Value + heures 
             ' // Penser à sortir 
            Exit For 
        End If 
    Next 
    
Next 
        Range("A3:F735").Sort Key1:=Range("A3"), Order1:=xlDescending, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ 
        DataOption1:=xlSortNormal 
End Sub 

voici mon nouveau code pour extraire et fremplire mais il manque la partie extraction, recuperer les données et la strucutre pour realiser sa correctement, j'ai mis en commentaire
Option Explicit 
Sub LancerExtraction() 

Extraction "BILAN POINTAGE2008test.XLS" 
Extraction "BILAN POINTAGE2009test.XLS" 

End Sub 

Sub Extraction(NomDuClasseur As String) 
Dim n°affaire As String 
Dim NomClasseurORIGINE As String 
Dim NomClasseurOUVERT As String 
Dim heures    As Integer 
Dim chapitre  As String 
Dim BEE As Integer 
Dim SOFT As Integer 
Dim cellule_digestPE As Range 
Dim cellule_bilan As Range 
Dim n°affaire_Bilan As String 
Dim chapitre_Bilan As String 
Dim BEE_Bilan As Integer 
Dim SOFT_Bilan As Integer 



'initialisation du classeur ouvert (Consolidation Pointage) 
NomClasseurORIGINE = ActiveWorkbook.Name 

'Transfert dans NomClasseurOUVERT le nom du classeur de pointage (issue de Sub lancerExtraction) 
NomClasseurOUVERT = NomDuClasseur 

'initialisation de la feuille du classeur (Consolidation Pointage) 
Worksheets("Heures Imputees").Activate 

' voila il faut d'abord mettre en place la structure de l'extration, J'ai besoin d'aide svp 
' la je suis dans les fichiers bilan pointage et feuille Bilan 

    For Each cellule_bilan In Worksheets("Bilan").Range("A3:A65536") 
     
    n°affaire_Bilan = cellule_bilan.Value 
    chapitre_Bilan = cellule_bilan.Offset(, 2).Value 
    BEE_Bilan = cellule_bilan.Offset(, 3).Value 
    SOFT_Bilan = cellule_bilan.Offset(, 4).Value 
     
     
    ' je suis dans le fichier Planing_blian_heurestest 
     
   For Each cellule_digestPE In Worksheets("digest PE").Range("B3:B5000") ' je voudrais mettre la fin de la colonne B mais je connais pas encore la formule 
    
    n°affaire = cellule_digestPE.Value            '  On est en colonne B 
    BEE = cellule_digestPE.Offset(, 7).Value 'colonne AR 
    SOFT = cellule_digestPE.Offset(, 4).Value 'colonne AO 

Do While n°affaire = n°affaire_Bilan And chapitre_Bilan = "A02" 

BEE = BEE + BEE_Bilan 
SOFT = SOFT + SOFT_Bilan 

Loop 

         

End Sub 



voila si vous pouvez m'aider svp
A voir également:

5 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 1/07/2010 à 17:49
Oui, mais dans ce cas ne t'impatiente pas d'une réponse.. je ne suis pas toujours actif.
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
2
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
1 juil. 2010 à 17:04
Bonjour,
Difficile de répondre sans avoir ton classeur. (note que je comprend qu'il soit confidentiel)
Toutefois, plutôt que de mettre ce nombre invrésemblable de variables ne vaudrait-il pas mieux de creéer des tableaux ?
Ce serait déjà plus clair et plus simple.
A+
0
aprentizorrrr Messages postés 6 Date d'inscription lundi 21 juin 2010 Statut Membre Dernière intervention 1 juillet 2010
1 juil. 2010 à 17:09
merci d'avoir preté attention a mon probleme, alors je peux t'envoyer le fichier ou l'upload ici mais je sais pas comment upload un fichier ( sauf si c'est pareil que les images)
voila donc si je peux t'envoyer mes fichiers, de mon cote il n'y a pas de probleme
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
1 juil. 2010 à 17:25
Tu peu mettre ton classeur sur Cijoint.com
Si tu ne souhaite pas qu'il soit public tu met le lien sur un MP à mon intention mais si cela n'a pas d'importance tu peu le mettre sur un poste suivant.
Note que cette dernière solution est plus prolifique, tout le monde pouvant donner ses commentaires.
A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
aprentizorrrr Messages postés 6 Date d'inscription lundi 21 juin 2010 Statut Membre Dernière intervention 1 juillet 2010
1 juil. 2010 à 17:29
oki merci, je le fais des que je rentre de mon stage, parceque l'entreprise limite l'acces
0