VBA: Copier valeur en fonction de la date du jour

Résolu
alexysr Messages postés 25 Statut Membre -  
alexysr Messages postés 25 Statut Membre -
Bonjour,

J'aimerais savoir s'il est possible d'obtenir votre aide pour un morceau de code VBA ?

Avant je vous décri comment est mon fichier B, une colonne A dans laquelle il y a toutes les dates de l'année et des colonnes B,C,D... dans laquelle sont des valeurs.

Alors je vous explique, j'aimerais copier une valeur d'un fichier A vers un fichier B, et la coller dans la colonne B du fichier B, mais dans la ligne correspondante à la ligne de la colonne A avec la date du jour.

Je sais pas si je me suis exprimé de manière claire ou pas :s

En tout cas j'espère que vous serez en mesure de m'aider.

Bonne fin de weekend à vous! :)

9 réponses

  1. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    Il est possible que le VBA ne soit pas nécessaire !
    A quoi correspond le fichier A et B. 2 classeurs ou 1 classeur avec les fichiers A et B sur feuilles séparées... ?

    0
  2. alexysr Messages postés 25 Statut Membre
     
    Bonjour,

    Si car ce sera une partie d'un code dans lequel il y aura un grand nombre d'opérations.
    Deux classeurs différents.

    Merci
    0
  3. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    Eh bien dans ce cas c'est vous qui savez. Je ne peux rien faire de plus sans explication plus cohérente.
    Désolé.

    0
  4. WeaponEDGE Messages postés 114 Statut Membre 9
     
    Bonjour,

    Essayes cette boucle :

    Sub transfert()
    Nom_FichierA = "" 'Indiquer le Nom dans les guillemets
    Nom_FichierB = "" 'Indiquer le Nom dans les guillemets

    Nb_LigA = Workbook(Nom_FichierA).Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row 'il est nécessaire que l'onglet soit en première position du fichier A
    Nb_LigB = Workbook(Nom_FichierB).Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row 'il est nécessaire que l'onglet soit en première position du fichier B

    DepartA = 2 'en supposant que les date débutent en ligne 2 du fichier A
    DepartB = 2 'en supposant que les date débutent en ligne 2 du fichier B

    For i = DepartA To Nb_LigA
    Ref_DateA = Workbook(Nom_FichierA).Sheets(1).Cells(i, 1).Text
    For u = DepartB To Nb_LigB
    Ref_DateB = Workbook(Nom_FichierB).Sheets(1).Cells(u, 1).Text

    If Ref_DateA = Ref_DateB Then
    Workbook(Nom_FichierB).Sheets(1).Cells(u, 2) = Workbook(Nom_FichierA).Sheets(1).Cells(i, 2)
    Exit For
    End If
    Next u
    Next i
    End Sub

    N'oublies pas de copléter le nom des fichiers
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. alexysr Messages postés 25 Statut Membre
     
    Bonjour,

    Tous d'abord merci pour cette réponse WeaponEDGE!
    Ensuite je tiens à m'excuser pour le manque de clarté de ma question et information.

    Je récapitule:

    J'ai un fichier Alpha dans lequel plusieurs filtres sont appliqués à un tableau croisé dynamique se trouant dans l'onglet "Feuil4". Ce résultat qui est une valeur numérique (se trouve on va dire dans la colonne A ligne 10) doit être copié dans le Fichier Beta dans l'onglet "Manquant".

    Le fichier Beta, onglet "Manquant" est composé d'une colonne A dans laquelle sont tirés toutes les dates de l'année au jour le jour. Dans la colonne B doit rentrer la valeur copié; cependant cette valeur doit se coller dans la ligne correspondante à date du jour de la colonne A.

    J'espère que cela est un peu plus claire :s

    Merci encore!
    0
    1. WeaponEDGE Messages postés 114 Statut Membre 9
       
      petite question :

      La valeur à copier se situe dans la cellule "A10" de la "Feuil4", mais la date de référence se trouve dans quelle cellule ?
      0
    2. alexysr Messages postés 25 Statut Membre
       
      Oui dans la cellule A10 et Feuil4 du fichier Alpha
      Il n'y a pas de date de référence
      Seul dans le fichier Beta, colonne A se trouve toute les dates de l'année.
      Il y a pas un moyen que la macro (au moment ou elle est activée) sache la date du jour et copie la valeur dans la colonne B à la bonne ligne?
      0
    3. WeaponEDGE Messages postés 114 Statut Membre 9
       
      Si si c'est possible,

      Voilà le code :
      Penser à mettre le nom des 2 fichiers dans les endroit respectif du code indiqué par les commenttaires

      Sub transfert()
      Nom_FichierA = "" 'Indiquer le Nom dans les guillemets
      Nom_FichierB = "" 'Indiquer le Nom dans les guillemets
      ShtA = "Feuil4" 'Nom de la Feuille du Fichier A
      ShtB = "Manquant" 'Nom de la Feuille du Fichier B

      Valeur_A_Copier = Workbook(Nom_FichierA).Sheets(ShtA).Cells(10, 1)
      Date_Du_Jour = Date

      Nb_LigB = Workbook(Nom_FichierB).Sheets(ShtB).Cells(Rows.Count, 1).End(xlUp).Row

      Depart = 2 'en supposant que les date débutent en ligne 2 du fichier B

      For i = Depart To Nb_LigB
      Ref_Date = Workbook(Nom_FichierB).Sheets(ShtB).Cells(i, 1).Value
      If Date_Du_Jour = Ref_Date Then
      Workbook(Nom_FichierB).Sheets(ShtB).Cells(i, 2) = Valeur_A_Copier
      Exit For
      End If
      Next i
      End Sub
      0
    4. alexysr Messages postés 25 Statut Membre
       
      Merci beaucoup!!
      Je testerais ça plus tard, j'ai d'autres projets qui me sont tombés dessus, mais merci je te tiendrais au courant!
      0
    5. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 478
       
      Bonjour,
      En lisant ceci:
      J'ai un fichier Alpha dans lequel plusieurs filtres sont appliqués à un tableau croisé dynamique se trouant dans l'onglet "Feuil4".
      Je me pose la question si c'est faisable pour récupérer la valeur dans un TCD ..(la colonne de référence peut variée selon les fitres...?
      Salutations
      Le Pingou
      0
  7. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    Sauf erreur il faut écrire ... Workbooks(.....) !
    0
  8. alexysr Messages postés 25 Statut Membre
     
    Merci Le Pingou,
    J'ai bien mis le "s" mais maintenant il me dit que l'indice n'appartient pas à la sélection.

    Nom_FichierA = "data_140916test" 'Indiquer le Nom dans les guillemets Nom_FichierB = "KPI général_V2test" 'Indiquer le Nom dans les guillemets ShtA = "Tableau croisé dynamique6" 'Nom de la Feuille du Fichier A ShtB = "data mqt" 'Nom de la Feuille du Fichier B Valeur_A_Copier = Workbooks(Nom_FichierA).Sheets(ShtA).Cells(14, 1) Date_Du_Jour = Date Nb_LigB = Workbooks(Nom_FichierB).Sheets(ShtB).Cells(Rows.Count, 1).End(xlUp).Row Depart = 2 'en supposant que les date débutent en ligne 2 du fichier B For I = Depart To Nb_LigB Ref_Date = Workbooks(Nom_FichierB).Sheets(ShtB).Cells(I, 1).Value If Date_Du_Jour = Ref_Date Then Workbooks(Nom_FichierB).Sheets(ShtB).Cells(I, 2) = Valeur_A_Copier Exit For End If Next I
    0
  9. alexysr Messages postés 25 Statut Membre
     
    Désolé pour le message précédent, un problème est apparu :s

    Merci Le Pingou,
    J'ai bien mis le "s" mais maintenant il me dit que l'indice n'appartient pas à la sélection.

    Nom_FichierA = "data_140916test" 'Indiquer le Nom dans les guillemets
    Nom_FichierB = "KPI général_V2test" 'Indiquer le Nom dans les guillemets
    ShtA = "Tableau croisé dynamique6" 'Nom de la Feuille du Fichier A
    ShtB = "data mqt" 'Nom de la Feuille du Fichier B

    Valeur_A_Copier = Workbooks(Nom_FichierA).Sheets(ShtA).Cells(14, 1)
    Date_Du_Jour = Date

    Nb_LigB = Workbooks(Nom_FichierB).Sheets(ShtB).Cells(Rows.Count, 1).End(xlUp).Row

    Depart = 2 'en supposant que les date débutent en ligne 2 du fichier B

    For I = Depart To Nb_LigB
    Ref_Date = Workbooks(Nom_FichierB).Sheets(ShtB).Cells(I, 1).Value
    If Date_Du_Jour = Ref_Date Then
    Workbooks(Nom_FichierB).Sheets(ShtB).Cells(I, 2) = Valeur_A_Copier
    Exit For
    End If
    Next I
    0
  10. alexysr Messages postés 25 Statut Membre
     
    C'est bon ça marche, !!

    merci!!!!
    0