Importer des données de fichier excel et les traiter

  • Initiateur de la discussion Initiateur de la discussion julie169
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

julie169

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

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...
 
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
 
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)
 
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 modification par un modérateur:
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 modification par un modérateur:
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
 
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
 
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!
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
706
Retour