VBA pour copyr des valeurs de cellule à partir de classurs dans un dossier

Je dois créer des calculs pour environ 150 produits, dont chacun comprend environ 50 à 60 sous-produits. Selon le fait que le sous-produit soit produit ou acheté à partir d'une source externe, le prix serait calculé différemment. Essentiellement, je dois copyr-coller le poids et le prix pour chaque sous-produit inclus dans le produit et déterminer quelle est la source.

Je souhaite que Excel vérifie les calculs précédemment effectués dans le même dossier (tous les classurs différents) et s'il trouve une cellule dans l'un des classurs, puis copyz-collez le poids, le prix et la source dans le classur actuellement ouvert. Je suis complètement perdu quant à la façon de comparer les cellules et si une correspondance est trouvée, puis copyz-la au bon endroit. Je crois que .Find et .FindNext pourraient être utiles ici, mais je ne suis pas tout à fait sûr de leur utilisation.

Voici un exemple de la façon dont mes données sont structurées: entrez la description de l'image ici

Et c'est ce que j'ai trouvé jusqu'ici:

Sub RunCodeOnAllXLSFiles() Dim lCount As Long Dim wbResults As Workbook Dim wbCodeBook As Workbook Application.ScreenUpdating = False Application.DisplayAlerts = False Application.EnableEvents = False On Error Resume Next Set wbCodeBook = ThisWorkbook With Application.FileSearch .NewSearch 'Change path to suit .LookIn = "C:\ahjualune\stuff" .FileType = msoFileTypeExcelWorkbooks 'Optional filter with wildcard .Filename = "*NAV*.xls*" If .Execute > 0 Then 'Workbooks in folder For lCount = 1 To .FoundFiles.Count 'Loop through all 'Open Workbook x and Set a Workbook variable to it Set wbResults = Workbooks.Open(Filename:=.FoundFiles(lCount), UpdateLinks:=0) 'DO YOUR CODE HERE With ActiveSheet For Each c In .Range("B2:B90").Cells ' problematic place If c.Value = Then End If Next c End With wbResults.Close SaveChanges:=False Next lCount End If End With On Error GoTo 0 Application.ScreenUpdating = True Application.DisplayAlerts = True Application.EnableEvents = True End Sub 

  • C'est ce que j'ai compris de votre question. Vous avez eu 150 produits.
  • Chaque produit aura 50 à 60 sous-produits.
  • Vous aurez le poids et le prix pour chaque sous produit. Basé sur le nombre d'sets de ce genre de sous-produit que vous avez eu, vous multipliez le prix par set et le nombre d'sets pour find le prix total pour ce sous-produit.
  • Après cela, vous appendez tous les prix des sous-produits pour find le prix d'un produit.

Si ce que vous cherchez, j'ai une idée.

Mettez tous les principaux types de produits dans la feuille 1 d'un classur.

À partir de la deuxième feuille, mettez chaque sous-produit sous une seule feuille. Utilisez des formules de feuilles excel pour multiplier et append des prix.

Enregistrez une macro pour copyr ce prix des sous-produits sur la feuille1.

stockez la source dans une variable

déterminez le prix de la ligne actuelle -add à une variable

lorsque la source change, placez les totaux dans une colonne à droite

peut-être utiliser quelque chose comme

 range("A2").select dim sSource as ssortingng dim dPrice as decimal Dim dWeight as decimal dim dtotal as decimal Do Until ActiveCell = "" sSource = ActiveCell.Offset(0,8).value dprice = Activecell.offset(0,7).value Activecell.Offset(1,0).Select etc..... when your source changes write out to a column to the right...or something like that Loop 

Désolé, pas le time d'écrire le code complet pour vous … mais essayer de vous faire suivre …