Alimenter une colonne en fonction d'une date recherché

Hello le forum !

J'aimerai être aider sur mon fichier.

J'ai résumer le but du code recherché dans un classeur que je vous met en copie.

J'ai un tableau (tableau A) avec des dates sur une ligne (1) et pour chaque date, des données (ici vide).

Ensuite, j'ai un autre fichier (ici sur l'exemple je met le tableau sur la même feuille) avec un tableau (tableau B) , des données et bien entendu une date.

Je cherche à remplir le tableau A pour la bonne date en fonction de la date inscrite sur le tableau B.

J'ai fais plusieurs essais mais pas combiné entre eux ..

Sub Macro2()
    On Error Resume Next
    Dim cellule_viDE As Range
    Dim date_jOUr As Date
    Dim colonne_actIVe As Integer

   date_jOUr = Range("n11").Value

    Cells.Find(What:=date_jOUr, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate

    Range(date_jOUr).Activate
   Active.Column = colonne_actIVe

    For Each cellule_viDE In Columns(colonne_actIVe).Cells
        If Len(cellule_viDE) = 0 Then
            cellule_viDE.Select
            Exit For
        End If

    Next
End Sub

et

Sub Macro3()
    On Error Resume Next
    Dim cellule_viDE2 As Range

    For Each cellule_viDE2 In ActiveSheet.Columns(2).Cells
        If Len(cellule_viDE2) = 0 Then
            cellule_viDE2.Select
            Exit For
        End If
    Next
End Sub

J'ai simplifier au mieux car au final l'application que je vais en faire est bien plus complexe mais j'aimerai savoir déjà comment faire pour chercher via une boucle, la bonne date, puis alimenter les données en fonction de la colonne trouvé...

10code-en-cours.xlsm (22.21 Ko)

bonjour

il semble que tu te sois créé une difficulté

qui saisit dans B ?

à quoi ressemble le ou les vrais B chaque jour ?

il serait si facile de mettre A en saisie directe (oublions les fichiers B ils sont inutiles).

ce qui est simple fonctionnera dans 3 minutes, durant 20 ans.

ton avis ?

Bonjour,

Teste avec cette macro

Sub test()
  Dim Lig%, Col%, i%, l%, c%
  Lig = Feuil1.Range("A" & Rows.Count).End(xlUp).Row 'n° de la dernière ligne non vide de la colonne A
  Col = Feuil1.Cells(1, Columns.Count).End(xlToLeft).Column 'n° de la dernière colonne non vide de la ligne 1

  For i = 12 To 21
    For l = 2 To Lig
      For c = 2 To Col
        If Cells(11, 14) = Cells(1, c) Then
          If Cells(i, 13) = Cells(l, 1) Then
            Cells(l, c) = Cells(i, 14)
          End If
        End If
      Next c
    Next l
  Next i
End Sub

Salut JdVirus, M12 et Jmd !

mais j'aimerai savoir déjà comment faire pour chercher via une boucle, la bonne date, puis alimenter les données en fonction de la colonne trouvé...

Ci-joint ton fichier modifié avec des explications pour que tu comprenne le fonctionnement des boucles

Édit, je rajoute le code ci-dessous pour ceux qui veulent pas télécharger le fichier :

Sub RapprochementParBoucle()
Dim x As Long, y As Long, z As Long         'On prend ces 2 var pour les lignes
Dim i As Long, j As Long                    'On prend ces 2 var pour les colonnes
Dim DateCible As String                     'Prend la valeur de ta "date essai"
DateCible = Cells(11, 14)
i = Range("A1:A6500").End(xlToRight).Column 'On compte le nombre de colonne du tableau A
For j = 2 To i                              'Via cette boucle, on cherche la bonne colonne
    If Cells(1, j) = DateCible Then
        Exit For                            'On a trouver notre bonne colonne et son numéro est maintenu dans j
    End If
Next
'On passe au ligne maintenant
x = Range("N" & Rows.Count).End(xlUp).Row   'On compte le nombre de ligne du tableau B
                                            'On sait où fini notre tableau B
                                            'Cependant ton tableau commence pas à la ligne 1 mais à la ligne 12
z = 2                                       'Dans ce cas on a besoin de 3 var pour boucle (x, y et z)
For y = 12 To x
        Cells(z, j) = Cells(y, 14)
        z = z + 1                           'On oublie pas de donner +1 à notre variable z
Next

End Sub

Restant à dispo !

7pour-jdvirus.xlsm (21.58 Ko)

Merci M12 et Juice, c'est bien l'effet recherché !

Il faut que j'apprend à bien comprendre vos codes car le tableau B n'est pas comme sur l'exemple mais disposé autrement (les données sont transposé à l'horizontale) mais je vais essayer de l'adapter.

J'aurai du en effet disposer mon exemple de la même façon

bonjour

il semble que tu te sois créé une difficulté

qui saisit dans B ?

à quoi ressemble le ou les vrais B chaque jour ?

il serait si facile de mettre A en saisie directe (oublions les fichiers B ils sont inutiles).

ce qui est simple fonctionnera dans 3 minutes, durant 20 ans.

ton avis ?

Oui c'est possible, mais en procédant par étape ça me parait plus abordable.

Mais je suis d'accord avec toi, je me suis compliqué la tache sans soute.

Edit :

Je suis en train de me dire que oui en effet, pour alimenter mon tableau B avec mon rapport journalier, j'ai du créer une macro avec une multitude de variable.

Au lieu d'alimenter un "tableau B", il semble mieux d'alimenter directement tous mes indicateurs (tous les fichiers) en fonction de la date de mon rapport.

Hélàs, je ne peux pas vous faire voir la macro qui alimente mon tableau B car trop confidentiel

Après raisonnement, ma recherche est différente.

J'apprend autant en technique VBA qu'en logique dans mes applications et je vous en remercie .

Je vais partir de ma macro qui alimente le tableau a au tableau b mais au lieu d'alimenter un tableau qui va servir à alimenter d'autres fichier, je vais tenter de le faire directement du tableau A, aux différents fichiers (qui au passage ont le même nombre de colonne).

J'ai juste besoin d'aide pour adapter ça dans le bon format.

7pour-jdvirus.xlsm (27.64 Ko)

Re Jd,

J'ai juste besoin d'aide pour adapter ça dans le bon format.

Adapter quoi au bon format :< ?

Je vais adapter le code et je reviendrai vers vous une fois fini.

Re- le forum !

Je me suis basé sur le code de Juice que je comprend mieux, ou du moins une partie.

Le but est différent et je pense que la deuxième boucle n'est pas forcément nécessaire.

Mais je ne sais pas comment appliquer une valeur à un numéro de ligne prédéfini.

Je m'explique :

Dans mon premier post je parlai d'un tableau A qui devait être alimenté par le tableau B.

Le tableau B réceptionne tous les rapports journalier grâce à une macro que j'ai déjà créer qui fonctionne, mais après réflexion, je préfère que tous mes fichiers soient directement alimenté par les rapports journalier sans passer par un "tableau B" qui réceptionne toutes les données.

Donc :

la où ça se complique pour moi c'est que j'ai 3 fichiers à alimenter.

Le rapport journalier n'est pas disposé comme un simple tableau mais en plusieurs petits..

Donc, pour le premier fichier (disons le tableau A) :

J'ai créer une variable pour chaque données dont j'ai besoin dans le rapport journalier, puis je sais maintenant comment chercher la bonne date dans la ligne où se trouve les dates pour connaitre la position de la bonne colonne où alimenter mes données dans le tableau A.

Sauf qu'il ne s'agit pas de copier coller une liste de données, mais de le faire individuellement.

Par exemple:

Je réceptionne dans une variable T la valeur situé en B1 sur le rapport journalier, et je dois l'ajouter sur la ligne 7 de la colonne identifié (à la bonne date)sur le tableau A

je suppose que c'est pas compliqué mais moi je pèche ...

Re- !

je suppose que c'est pas compliqué mais moi je pèche ...

En tout cas c'est compliqué sans le fichier xD

Possibilité de l'avoir avec un exemple de ce que tu veux à l'intérieur ?

Oui je comprend.

Je créer un exemple et je post ici .

Voici

Bon c'est un exemple, le rapport journalier est différent mais en gros ça résume le problème.

Pour confirmation :

Ton tableau A et ton rapport Journalier sont sur deux classeurs différents ou sont sur le même classeur mais sur deux onglets différent ?

Le rapport journalier est un classeur généré chaque jour (un fichier par jour)

Le tableau A ainsi que les autres sont sur un classeur différent.

Bon alors sa complique pas mal les choses du coup, si ton Rapport Journalier est un fichier généré par jour.

Il faut donc que les données aillent de ton "Rapport Journalier" à ton "Tableau A" pour la ligne correspondante et pour la date correspondante ?

Oui mais la ligne restera toujours à la même position. Idem pour le rapport journalier, il est toujours structuré de la même façon.

Je compte mettre la macro dans mon classeur perso pour la lancer depuis Excel directement.

Je compte mettre la macro dans mon classeur perso

Ton classeur perso c'est lequel :0 ?

Le tableau A ?

(Que je sache d'où démarre le fichier et où il doit aller récup les données)

Non je veux dire dans mon classeur de macro personnels. Pour inclure le bouton dans ma barre d'outils Excel.

Si besoin, je peux créer une copie du fichier type à alimenter ...

Re JdVirus,

Je vais pas te mentir : Par manque d'information claire et précise, j'ai lâcher ton projet.

Parce que débuter un projet quand on a pas toutes les infos (surtout que ton projet semble compliqué), sa veux forcement dire que tu reviendra nous voir en disant :

"Je comprend pas, sa fonctionne pas."

Donc si tu veux que je prenne du temps pour t'aider, j'aimerai savoir, ce que tu a comme fichier, ce que tu veux obtenir et comment tu l'obtient.

Pas de :

Bon c'est un exemple, le rapport journalier est différent mais en gros ça résume le problème.

Ni de troisième fichier qui sorte de nul part :

Non je veux dire dans mon classeur de macro personnels.

Mais belle et bien ce que tu veux de A à Z et ce que tu a pour l'obtenir et tout sa en expliquant correctement ton projet.

Avec sa, je te ferais ton fichier.

Cordialement

Rechercher des sujets similaires à "alimenter colonne fonction date recherche"