Macro VBA Importer donnees plusieurs critères

atticus182

XLDnaute Nouveau
Bonjour à tous,

Je suis nouveau sur VBA, et après avoir passer 3 jours à chercher une solution a mon problème, je me décide à le poster sur ce forum.

Je souhaite pour une entreprise A, importer des données (chiffres d'affaires) dans un tableau A, en utilisant un bouton qui me permettrait de selectionner le bon fichier. La macro devrait donc rechercher dans mon tableau de données, en fonction de l'année et du critères (chiffre d'affaire estimé, final), le bon CA; pour le copier puis le coller dans mon tableau A d'orgine.

Problème : j'ai réussi a faire une macro qui copie colle les données de mon fichier "target" mais seulement en lui spécifiant quelles cellules copier (F8, F9..), je n'ai pas réussi a le faire "réfléchir" pour qu'il trouve de lui même la bonne cellule à copier.

Voilà je vous joint les deux fichier en pièce jointe, j'ai éffacé le code pour ne pas vous induire en erreur
A titre d'infos, j'avais utilisé la fonction "Target_Data = Target_Workbook.Sheets(1).Range("ici le numéro de la cellule à copier")Source_Workbook.Sheets(1).Range("ici le numéro de la cellule à coller") = Target_Data

Voilà si quelqu'un peu m'éclairer, je lui en serais éternellement reconnaissant !

Cdt,

Atcs
 

Pièces jointes

  • Chiffre affaire.xlsm
    17.6 KB · Affichages: 45
  • Donnees.xlsm
    9 KB · Affichages: 39
  • Donnees.xlsm
    9 KB · Affichages: 57
  • Donnees.xlsm
    9 KB · Affichages: 59

atticus182

XLDnaute Nouveau
Re : Macro VBA Importer donnees plusieurs critères

Hello,

Dans mon fichier target, il faut prendre le "total" equivalent à la bonne année et en fonction de l'estimation 1/2/ ou final.

Exemple : Pour la cellule B8 de mon tableau "chiffre d'affaire", il faut que la macro vba trouve et copie la cellule "F1" de mon fichier cible (donnees.xlsm); le tout sans les lieer explicitement mais que vba comprenne que la cellule F1 est sur les ligne "2015/Estimation1" et colonne "total".

Je sait pas si j'ai été assez clair pour que vous me compreniez bien, en tout cas merci de t'intéresser à mon cas titiborregan5 :)
 

titiborregan5

XLDnaute Accro
Re : Macro VBA Importer donnees plusieurs critères

Je récapitule parce que je pige pas tout!
Tu veux rapatrier dans données l'info de chiffre d'affaires? (j'aurais dit l'inverse vus tes tableaux mais bon)...
Ensuite c'est si 2 est rempli on prend 2 et sinon on prend 1?
Et comment on choisit l'année?? toujours la plus récente? on test 2015 puis 2014 etc?
 

atticus182

XLDnaute Nouveau
Re : Macro VBA Importer donnees plusieurs critères

Non tu avait bien compris à l'origine ! Je vais essayer de clarifier :

Je veux rappatrier dans "chiffre d'affaire", les infos qui sont dans "données".

Pour expliquer ces différents cellules:
l'entreprise fait des prévisions de son futur CA à deux périodes différentes dans l'année (Estimation 1 et Estimation2), puis nous avons le CA "réel" (Final).
Les estimations sont conservés de l'année N et N-1 (2014 et 2015) pour les comparer, mais pas pour les années antérieure où l'ont garde seulement le "Final" (2013-2012 2011 etc..)

Du coup dans mon tableau "chiffre d'affaire" vide en fonction des années et des colonnes, il faut retrouver la données correspondate dans mon tableau "données", copier le contenue de la cellule dans "donnée" puis la coller dans mon fichier "chiffre d'affaire"

Histoire d'etre plus clair, je joint en pièce jointe le résultat que je devrais obtenir apres avoir importer les données.

J'espère avoir été un peu plus clair :)
 

Pièces jointes

  • Chiffre affaire resultats.xlsm
    17.6 KB · Affichages: 37
  • Chiffre affaire resultats.xlsm
    17.6 KB · Affichages: 41
  • Chiffre affaire resultats.xlsm
    17.6 KB · Affichages: 25

titiborregan5

XLDnaute Accro
Re : Macro VBA Importer donnees plusieurs critères

ET pourquoi absolument par macro?
avec somme.si.ens ça fonctionne aussi... cf. PJ!

Tibo
 

Pièces jointes

  • Chiffre affaire resultats.xlsm
    19.3 KB · Affichages: 33
  • Chiffre affaire resultats.xlsm
    19.3 KB · Affichages: 42
  • Chiffre affaire resultats.xlsm
    19.3 KB · Affichages: 51

atticus182

XLDnaute Nouveau
Re : Macro VBA Importer donnees plusieurs critères

Bien vu, mais le but est de le faire par marcro car je voudrais l'utiliser comme modèle, et faire en sorte que en sélectionnant le fichier données approprié (car j'ai plusieurs fichier de données, qui doivent etre couplé à chaque fois avec un fichier "chiffre d'affaire" unique ..), je puisse compléter mon tableau sans être oblifé à chaque fois de recopier les formules manuellement dans chaque fichier "chiffre affaire".

Merci en tout cas du temps que tu consacre sur ce cas !
 

titiborregan5

XLDnaute Accro
Re : Macro VBA Importer donnees plusieurs critères

j'ai fait ça mais j'ai un pb avec le sumifs dans VBA je ne sais pas comment m'en servir... si qq1 d'autre peut aider..

VB:
Sub Importer()
nf = Application.GetOpenFilename("Fichiers Excel,*.xls*")
If nf = False Then
Else
Workbooks.Open nf
Set Awb = Workbooks("Donnees.xlsm")
With Awb.Sheets("Feuil1")
For LiGNe = 5 To 8
    For CoL = 2 To 4
    An = ThisWorkbook.Sheets(1).Cells(LiGNe, 1)
    BR = ThisWorkbook.Sheets(1).Cells(4, CoL)
A = WorksheetFunction.SumIfs(.Range("f5:f11"), .Range("b5:b11"), An, Range("c5:c11"), BR)
'B = WorksheetFunction.SumIfs(.Range("f5:f11"), An, .Range("B5:B11"), BR, .Range("C5:C11"))




    ThisWorkbook.Sheets("Feuil1").Cells(LiGNe, CoL) = B
    Next
Next
End With


End If
End Sub
 
Dernière édition:

titiborregan5

XLDnaute Accro
Re : Macro VBA Importer donnees plusieurs critères

Petite correction,
essaie le code suivant qui chez moi marche!
VB:
Sub Importer()
nf = Application.GetOpenFilename("Fichiers Excel,*.xls*")
If nf = False Then
Else
Workbooks.Open nf
Set Awb = Workbooks("Donnees.xlsm")
With Awb.Sheets("Feuil1")
For LiGNe = 5 To 8
    For CoL = 2 To 4
    An = ThisWorkbook.Sheets(1).Cells(LiGNe, 1)
    BR = ThisWorkbook.Sheets(1).Cells(4, CoL)
A = WorksheetFunction.SumIfs(.Range("f5:f11"), .Range("b5:b11"), An, Range("c5:c11"), BR)
If A <> 0 Then ThisWorkbook.Sheets("Feuil1").Cells(LiGNe, CoL) = A
    Next
Next
End With
Awb.Close
End If
End Sub
Tiens nous au courant
 

Yaloo

XLDnaute Barbatruc
Re : Macro VBA Importer donnees plusieurs critères

Bonjour tout le monde,

Sinon avec cette macro :
VB:
Sub ImportCA()
Dim c&, i&, Wb As Workbook
Workbooks.Open (ThisWorkbook.Path & "\" & "Donnees.xlsm")
With ThisWorkbook.Sheets(1)
  For i = 5 To [B65536].End(3).Row
    Select Case Cells(i, 3)
      Case "Estimation 1": c = 2
      Case "Estimation 2": c = 3
      Case "Final": c = 4
    End Select
    On Error Resume Next
    .Cells(Application.Match(Cells(i, 2), .Columns(1), 0), c) = Cells(i, 6)
    On Error GoTo 0
  Next
End With
ActiveWorkbook.Close
End Sub

A+

Martial
 

atticus182

XLDnaute Nouveau
Re : Macro VBA Importer donnees plusieurs critères

Bonjour à tous,

Merci à vous d'avoir consacrer du temps sur mon problème, j'ai testé vos code et apparement ils fonctionnent très bien !

J'essaye sur mon fichier "à plus grande échelle", je vous tiens au courant si je rencontre d'autre soucis.

En tout cas merci pour l'aide, et j'espère que cette solution sera utile à d'autre personnes ! :)
 

Discussions similaires

Réponses
12
Affichages
313

Statistiques des forums

Discussions
312 677
Messages
2 090 821
Membres
104 677
dernier inscrit
soufiane12