VBA/Excel

PleaseCallMe -  
 PleaseCallMe -
Bonjour,

J'aimerais avoir votre avis sur un petit programme qui m'embête un peu.
Voilà, j'ai un classeur nommé Suivi_prod dans lequel figure un tableau.
Je dois remplir ce tableau en me servant d'autres classeurs.
Notamment un nommé "Suivi des stocks".
Celui-ci présente une colonne date en B du Lundi au vendredi.
Je dois recuperer des données contenant dans une autre colonne en D.
Cela dit je dois recupérer les données compris entre Lundi et Vendredi uniquement.
Et si la date actuelle est un Mardi par exemple, il doit me generer la somme des valeurs du Lundi au vendredi précédant.
Si quelqu'un peut m'éclairer pour savoir comment m'y prendre ca serait sympa.
Configuration: Windows XP
Internet Explorer 6.0

30 réponses

  • 1
  • 2
Résumé de la discussion

Le problème porte sur Excel et VBA : récupérer dans un autre classeur les données du lundi au vendredi et sommer la semaine précédente selon le jour courant. Plusieurs solutions visent à déterminer le lundi de la semaine et à faire figurer la somme des valeurs correspondantes, notamment via des fonctions de date ou des enregistrements macro. La meilleure approche évoquée décrit une macro qui ouvre le classeur source et calcule la somme sur une plage correspondant à la semaine, en utilisant le modèle R1C1 pour la référence. En cas de besoin, le recours à des méthodes alternatives basées sur le numéro de semaine et la date peut offrir une flexibilité face à des variations de calendrier.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. EnjoY
     
    salut,

    tu as essaye d'enregistrer ta macro manuelement ? tu cliques sur enregistrer macro, tu fais tes etapes à la souris et après tu arretes l'enregitrement , ca te génére automatiquement du code. c'est pratique pour les debutants comme moi .
    0
  2. PleaseCallMe
     
    Je vais essayer merci d'avance.
    0
  3. PleaseCallMe
     
    La macro manuellement marche à merveille cela dit, je n'ai aucune idée comment je peux faire pour le résultats se fasse en fonction de la date.
    Si on est mardi, alors il fait la somme de la semaine précédante, je bloque sur ce problème!
    Si quelqu'un peut me donner une piste ça serait pas de refus!
    0
  4. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Peux tu mettre ici la macro que tu as généré.

    Tu dis : Si on est mardi, alors il fait la somme de la semaine précédante ... que fait-on dans les autres cas ?

    ;o)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. PleaseCallMe
     
    Sub Contrats_Semaine()

    Application.Workbooks.Open "C:\chemin\Suivi des stocks et des flux Année 2008.xls"

    ' Contrats Semaine
    Windows("Suivi_prod_V29.xls").Activate
    Range("F7").Select
    ActiveCell.FormulaR1C1 = _
    "=SUM('[Suivi des stocks et des flux Année 2008.xls]Juillet'!R11C4:R15C4)"
    Range("F8").Select

    Workbooks("Suivi des stocks et des flux Année 2008.xls").Activate
    ActiveWorkbook.Close False

    End Sub

    Mais je voudrais qu'il fasse la somme par rapport à la date qu'on est.
    En gros il fait la somme, lorsque la semaine est terminé, si le vendredi est passé, alors il fait la somme de la semaine passée. Sachant que dans une semaine ça va du Lundi au Vendredi.
    A chaque fois il genere les résultats de la semaine précédante.
    0
  7. Polux31 Messages postés 7219 Statut Membre 1 204
     
    tu veux faire le calcul lorsque tu ouvres le classeur ?
    0
  8. PleaseCallMe
     
    Le problème ne vient pas du calcul mais simplement par rapport à la date.
    Pour qu'il puisse me calculer la somme d'une semaine lorsque celle ci est complète, c'est difficile à expliquer ^^
    0
  9. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Je vois à peu près ce que tu veux mais également difficile à expliquer ... dans l'éditeur VB, regarde dans l'aide (F1) en tapant Date dans recherche.

    Si tu rencontres des difficultés, reviens ici

    ;o)
    0
  10. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour tous,
    Une petite explication, je vois que tu a tes feuilles qui sont nommées par mois ?
    Quand le mois commence, par ex: par mercredi, que doit-tu faire.
    Et idem pour la fin du mois.
    Chercher des données dans mois précédant ?
    A+
    0
  11. PleaseCallMe
     
    Si le mois commencent un mercredi je dois prendre le lundi du mois précedant et faire la somme.
    Idem pour la fin du mois!
    Je vois pas du tout comment procéder!
    Merci de votre aide en tout cas, si vous avez d'autres idées à proposer ^^
    0
  12. PleaseCallMe
     
    On considère que le modèle des fichiers Excel transmis en exemple ne changera pas, seul le nombre de ligne d’un onglet de fichier à un autre est amené à varier.

    La génération de rapport se faisant d’une semaine à l’autre l’application devra par exemple en semaine 30 générer le rapport de la semaine 29 et non celle en cours.

    La première chose à faire est donc de déterminer les limites incluses de la semaine passée (la fonction DayOfWeek(ddate As Date) devrait vous être utile pour déterminer le lundi de la semaine passée).

    La première donnée à déterminer sera le nombre de dossiers reçus dans la semaine passée, pour cela il vous faudra d’abord créer un lien OLE vers le fichier choisit par l’utilisateur.
    Au sein de ce fichier il vous faudra déterminer l’onglet concernant votre semaine en cours, pour cela je vous conseille de commencer à la feuille d’index 0 du fichier Excel, de tester la valeur du mois de la ligne 13 colonne B afin de déterminer à quel mois cet onglet correspond et vous positionner sur le bon onglet.
    Une fois l’onglet déterminé il ne vous reste plus qu’à vous positionner à la ligne appropriée pour commencer le comptage (attention une semaine peut être à cheval sur deux mois).

    Voila quelques infos que m'a donné mon chef de projet si jamais ça peut vous éclairer un minimum!
    0
  13. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    On considère que le modèle des fichiers Excel transmis en exemple ne changera pas
    j'ai pas vu ce fichiers Excel transmis ? où est-il
    0
  14. PleaseCallMe
     
    J'ai pas de lien pour founir le tableau mais en gros y'a une colonne "Date"
    Avec chaque jour du Lundi au Vendredi, et une autre colonne avec les données que je veux récupérer par rapport à ces dates!
    0
    1. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      Désolé, avec les renseignements donné impossible de t'aider.
      Si tu peu mettre un exemple de ton fichier sur
      https://www.cjoint.com/
      et mettre le lien dans un poste suivant.
      0
  15. PleaseCallMe
     
    Hm j'ai a peu près trouver comment faire!
    Il me manque qu'un petit truc
    J'aimerais savoir comment on peut faire pour récupérer le Lundi d'une semaine à partir du Numéro de Semaine et de l'Année!
    Merci d'avance
    0
  16. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    MyDate = "5/08/2008"

    a = Weekday(MyDate, vbMonday) '=2 si c'est mardi
    'La ligne de lundi = ta ligne - a + 1
    0
  17. PleaseCallMe
     
    Une dernière petite question
    Avec le numéro du jour le numéro de la semaine et l'année
    Comment on met la date sous le format jj/mm/aaaa

    Merci de ton aide en tout cas!
    0
  18. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Format(MyDate,"jjmmaa")
    si Anglais
    Format(MyDate,"ddmmyy")
    0
  19. PleaseCallMe
     
    Hm ouais je vois.
    Il me manque un tout petit truc pour faire ceci
    Vu que le jour je l'ai en 1/2/3/4/5/6/7 que je le transforme en Lundi etc..
    Mais avec le numéro de la semaine je dois être capable de retrouver le jour exact : par exemple si on est le 17 !
    0
  20. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    a = Format(MyDate, "dddd mm/yyyy")
    si tu veux que le jour

    a = Format(MyDate, "dddd")
    0
  21. PleaseCallMe
     
    Ca marche mais c'est pas ça que je veux!
    En gros je veux qu'à partir du jour c'est-a-dire un Lundi par exemple ET avec le numéro de la semaine retrouvé la date exacte (en combinant Numéro de la Semaine ET Jour)
    Peu importe sur le jeu est en lettre ou en chaine de caractères!
    0
  • 1
  • 2