Importer des données de fichier excel et les traiter

julie169

XLDnaute Nouveau
Salut à toutes et à tous,

Je cherche à calculer le prix de revient d'un appareil en utilisant deux fichiers excel.

Dans l'un on a tous les composants (et leur nombre) constituant l'appareil, dans l'autre on a le prix de plein de composants.(bien plus que pour l'appareil)

Je souhaite faire ce calcul automatiquement.
C'est à dire l'utilisateur du fichier que je veux créer doit sélectionner l'appareil dans une liste. cette liste sera en fait des noms de fichier excel tous contenus dans un même dossier (fichier qui contient la liste des composants de l'appareil )

après sélection de l'appareil par l'utilisateur (à ce moment on va chercher le fichier excel en question par ouverture discrète), on compare la liste des composants avec la liste des prix.
On va rechercher le prix des composants dans la liste des prix.
On calcule les prix par composant (X composant A à Y € = Z€)
et enfin le prix total de l'appareil. (Somme de tous les Z)

Comme vous l'avez compris il y a plusieurs séquence dans cette application.
Je suis toute disponible à les traiter les une après les autres. Le but étant aussi que je comprenne pour pouvoir refaire voir améliorer.

Merci à tous pour votre soutient.

Julie
 

julie169

XLDnaute Nouveau
Re : Importer des données de fichier excel et les traiter

Salut Tototiti,

En fait j'ai réussi à contenir toutes mes données dans un seul fichier (sauf le prix des articles)

un extrait du nouveau fichier de calcul du prix de revient est en PJ

Pour le choix de l'appareil j'utilise un tri-ordonné-sans doublons renvoyé dans un combobox. (feuille Nomenclature colonne D)

dans la question précédente, j'essayais de créer la liste des composants en fonction de l'appareil sélectionné dans le UserForm. VlookUp(combobox1.text)

Ensuite j'utiliserai cette liste (tableau?) pour calculer le prix de revient de l'appareil en faisant appel au fichier 'cout standard.xls' qui contient tous les prix de chaque article.

Je te laisse voir mes évolutions du fichier et j'attends tes critiques.

A tout,

Julie
 

Pièces jointes

  • Prix App.xls
    40 KB · Affichages: 102
  • Prix App.xls
    40 KB · Affichages: 94
  • Prix App.xls
    40 KB · Affichages: 98

tototiti2008

XLDnaute Barbatruc
Re : Importer des données de fichier excel et les traiter

Re,

trés bien, tes changements, mais ça change pas mal la problématique...
pour ton tri sans doublons, trés bien.
pour la liste des composants, ça ne pourra pas marcher avec un Vlookup. Vlookup renvoie la première valeur trouvée, pas la liste de toutes les valeurs correspondantes.

bref il va falloir revoir des trucs...
 

julie169

XLDnaute Nouveau
Re : Importer des données de fichier excel et les traiter

Re,

Merci pour ces critiques. ça me fait chaud au cœur de voir que je ne suis pas si nulle que ça! Pour une débutante bien sûr...

Bon, alors pour ma liste de composant, si j'ai bien compris je dois créer un tableau 'dynamique': Je compte d'abord combien il y a de composant lié à l'appareil sélectionné, ensuite je remplis le tableau ajusté au nombre de composant et enfin je l'utilise pour calculer le prix total. c'est ça?

Si oui... ....Quelqu'un aurait une petite idée des fonctions que je pourrais utiliser car à chaque fois je passe beaucoup de temps à chercher la bonne fonction.

Merciiii
 

tototiti2008

XLDnaute Barbatruc
Re : Importer des données de fichier excel et les traiter

Re,

ben en l'occurence, je ne vois que du manuel, à savoir boucler sur le nombre de lignes de ta feuille Nomenclature.

un truc du genre :

Code:
Dim ListeComp() As String, i As Long
    ReDim ListeComp(0)
    With ThisWorkbook.Worksheets("Nomenclature")
        DerLigne = .Range("A65536").End(xlUp).Row
        For i = 2 To DerLigne
            If .Cells(i, 4).Value = NomApp Then
                ReDim Preserve ListeComp(UBound(ListeComp) + 1)
                ListeComp(UBound(ListeComp)) = .Cells(i, 10).Value
            End If
        Next i
    End With

dans ce cas, le tableau ListeComp contiendra les identifiant Item de ton Appareil de la "case" 1 à la dernière (la "case" 0 est vide)
 

julie169

XLDnaute Nouveau
Re : Importer des données de fichier excel et les traiter

Wahoo!

Je sais pas si ça marche mais en tout cas je suis stup et fête de t'as rapidité de réponse.

J'espère qu'un jour je connaitrai aussi bien quevous, les Barbatruc, ce langage.

Je teste et je reviens vers toi.

Merci!

Julie
 
Dernière édition:

julie169

XLDnaute Nouveau
Re : Importer des données de fichier excel et les traiter

Ooops!

Apparemment il y a une erreur avec ListComp. je crois bien qu'il soit utilisé deux fois avec une dimension différente.

Regardez:
Code:
Dim [COLOR="Red"]ListeComp([/COLOR]) As String
    ReDim ListeComp(0)
    With ThisWorkbook.Worksheets("Nomenclature")
        DerLigne = .Range("A65536").End(xlUp).Row
        For i = 2 To DerLigne
            If .Cells(i, 4).Value = NomApp Then
                ReDim Preserve ListeComp(UBound(ListeComp) + 1)
                ListeComp(UBound(ListeComp)) = .Cells(i, 10).Value
            End If
        Next i
    End With
    
    Set Wkb = Workbooks.Open(ThisWorkbook.Path & "\COUT STANDARD.xls")
    DerLigne = Wkb.ActiveSheet.Range("A65536").End(xlUp).Row
       For i = 1 To UBound(ListeComp, 1)
            Code = Left([COLOR="Red"]ListeComp(i, 2)[/COLOR], InStr(1, [COLOR="Red"]ListeComp(i, 2),[/COLOR] " ") - 1)
            If Application.WorksheetFunction.CountIf(Wkb.ActiveSheet.Range("A4:A" & DerLigne), Code) = 0 Then
                Remarque = "Certains composants sont introuvables dans Liste prix composant.xls"
            Else
                Total_Purch = Total_Purch + CLng(ListeComp(i, 1)) * CDbl(Application.WorksheetFunction.VLookup(Code, Wkb.ActiveSheet.Range("A4:B" & DerLigne), 2, False))
                Total_Sourcing = Total_Sourcing + CLng(ListeComp(i, 1)) * CDbl(Application.WorksheetFunction.VLookup(Code, Wkb.ActiveSheet.Range("A4:C" & DerLigne), 3, False))
            End If
        Next i

Le message d'horreur que j'ai c'est :'L'indice n'appartient pas à la selection"

Quelqu'un a une idée?
 
Dernière édition:

julie169

XLDnaute Nouveau
Re : Importer des données de fichier excel et les traiter

Salut Tototiti, Salut Forum,

On trouve les quantités de composant sur la feuille nomenclature colonne N 'CNQT'. Par contre le format de cette colonne est 'monétaire' alors que le top certian un 'nombre' avec deux (2) décimales. enfin, ça c'est un détail.


Merci pour le chip 'Tototiti

Bonne journée à tous.

Julie
 

tototiti2008

XLDnaute Barbatruc
Re : Importer des données de fichier excel et les traiter

Re,

essaye de modifier le code comme ça :


Code:
Dim [COLOR=red]ListeComp([/COLOR])
ReDim ListeComp(1 To 2, 0)
With ThisWorkbook.Worksheets("Nomenclature")
DerLigne = .Range("A65536").End(xlUp).Row
For i = 2 To DerLigne
If .Cells(i, 4).Value = NomApp Then
ReDim Preserve ListeComp(1 to 2,UBound(ListeComp) + 1)
ListeComp(1,UBound(ListeComp)) = .Cells(i, 10).Value
ListeComp(2,UBound(ListeComp)) = .Cells(i, 13).Value
End If
Next i
End With
    Set Wkb = Workbooks.Open(ThisWorkbook.Path & "\COUT STANDARD.xls")
    DerLigne = Wkb.ActiveSheet.Range("A65536").End(xlUp).Row
       For i = 1 To UBound(ListeComp, 2)
            Code = Left([COLOR=red]ListeComp(1, i)[/COLOR], InStr(1, [COLOR=red]ListeComp(1, i),[/COLOR] " ") - 1)
            If Application.WorksheetFunction.CountIf(Wkb.ActiveSheet.Range("A4:A" & DerLigne), Code) = 0 Then
                Remarque = "Certains composants sont introuvables dans Liste prix composant.xls"
            Else
                Total_Purch = Total_Purch + CDbl(ListeComp(2, i)) * CDbl(Application.WorksheetFunction.VLookup(Code, Wkb.ActiveSheet.Range("A4:B" & DerLigne), 2, False))
                Total_Sourcing = Total_Sourcing + CDbl(ListeComp(2, i)) * CDbl(Application.WorksheetFunction.VLookup(Code, Wkb.ActiveSheet.Range("A4:C" & DerLigne), 3, False))
            End If
        Next i
 

julie169

XLDnaute Nouveau
Re : Importer des données de fichier excel et les traiter

Yes! yes! YEEEEEESS!

ça maaaaaarche!! c'est super!!!! Ouf!!!! je suis sauvée!!!!

Merci beaucoup le Forum et ENORME MERCI à Tototiti pour ton aide, ta dispo, ta gentillesse et ton dévouement!

MERCIIIIII!
 

tototiti2008

XLDnaute Barbatruc
Re : Importer des données de fichier excel et les traiter

Mais de rien, ça a été un plaisir.
comme tu as pû l'observer, je n'avais pas testé le code...(il me manque quelques fichiers pour ça) mais au final, ça a l'air de tourner donc tant mieux...

à bientôt
 

Discussions similaires

Statistiques des forums

Discussions
313 902
Messages
2 103 391
Membres
108 631
dernier inscrit
tarek.kanaan