Afficher résultat dans calendrier en fonction de dates Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
V
VLAD83600
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 18 mars 2017
Version d'Excel : 2016

Message par VLAD83600 » 18 mars 2017, 13:14

Bonjour,
néophyte dans ce domaine, je me suis malgré tout crée un tableau excel avec 5 feuilles (calendrier,bdc,modèle,portefeuille,saisie plan média) pour gérer des calculs sur un bon de commande (BDC) mais aussi gérer des dates de parutions sur un calendrier.
ma question est la suivante: faut il une formule ou une macro pour parvenir à transférer une parution " LIVRE1" par exemple de la feuille" plan de saisie média" en fonction des dates énumérées sous la colonne vers la feuille "calendrier type" a l'endroit des dites dates pour avoir un visuel global sur l'année des parutions par clients.
J'ai mis en copie le fichier en espérant compléter ma demande laborieuse
merci par avance
cordialement
MATRICE PLANING 2017 B - Copie.ods
(31.18 Kio) Téléchargé 35 fois
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'724
Appréciations reçues : 155
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 18 mars 2017, 14:05

Bonjour Vlad, bonjour le forum,

Avec un document ods je n'étais pas sûr d'enregistrer la macro. Alors je te propose le code et te laisse le soin de le placer dans ton fichier... Il renvoie en face de la date dans l'onglet calendrier, le nom de la parution en ligne 9 de l'onglet plan media :
Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim TD As Variant 'déclare la variable TD (Tableau des Dates)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim NP As String 'déclare la variable NP (Nom de la Parution)
Dim R As Range 'déclare la variable R (Recherche)

Set OS = Worksheets("SAISIE_PLAN_MEDIA") 'définit l'onglet source OS
Set OD = Worksheets("CALENDRIER_type_") 'définit l'onglet destination OD
TD = OS.Range("B17").CurrentRegion 'définit le tableau des dates TD
For I = 2 To UBound(TD, 1) 'boucle 1 : sur toutes les lignes I du tableau des dates TD (en partant de la seconde)
    For J = 1 To UBound(TD, 2) 'boucle 2 : sur toutes les colonnes J du tableau des dates TD
        If TD(I, J) <> "" Then 'condition : si la donnée ligne I colonne J de TD n'est pas vide
            NP = OS.Cells(9, J + 1) 'défifit le nom de la parution NP
            'définit la recherche R (recherche la date exacte dans l'onglet destination OD)
            Set R = OD.Cells.Find(TD(I, J), , xlFormulas, xlWhole)
            'si il existe au moins une occurrence trouvée, renvoie le nom de la parution NP dans la cellule correspondante
            If Not R Is Nothing Then R.Offset(0, 2).Value = NP
        End If 'fin de la condition
    Next J 'prochaine colonne de la boucle 2
Next I 'prochaine ligne de la boucle 1
End Sub
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
V
VLAD83600
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 18 mars 2017
Version d'Excel : 2016

Message par VLAD83600 » 18 mars 2017, 16:33

Merci à ThauTheme et au forum pour l'aide que vous apportez.
c'est Génial
encore une petite question pour ThauTheme si vous pouvez y remédiez : la macro fonctionne très bien mais si je fais une erreur sur une date et que je modifie celle-ci, l'ancienne date ne s'efface pas du calendrier, il faut l'a supprimé manuellement est ce normal?
mille merci
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'724
Appréciations reçues : 155
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 19 mars 2017, 02:00

Re,

Le nouveau code commence par vider le calendrier avant de reporter les données. En cas d'erreur de date et après correction, le fait de relancer la macro va tout actualiser.
Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim PL As Range 'déclare la variale PL (PLage)
Dim COL As Byte 'déclare la variale COL (COLonne)
Dim TD As Variant 'déclare la variable TD (Tableau des Dates)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim NP As String 'déclare la variable NP (Nom de la Parution)
Dim R As Range 'déclare la variable R (Recherche)

Set OS = Worksheets("SAISIE_PLAN_MEDIA") 'définit l'onglet source OS
Set OD = Worksheets("CALENDRIER_type_") 'définit l'onglet destination OD
Set PL = OD.Range("A1") 'initialise la plage PL
For COL = 3 To 36 Step 3 'boucle sur les 12 colonnes contenant les valeurs
    'définit la plage PL
    Set PL = IIf(PL.Cells.Count = 1, OD.Range(OD.Cells(2, COL), OD.Cells(32, COL)), Application.Union(PL, OD.Range(OD.Cells(2, COL), OD.Cells(32, COL))))
Next COL 'prochaine colonne de la boucle
PL.ClearContents 'efface les anciennes valeurs
TD = OS.Range("B17").CurrentRegion 'définit le tableau des dates TD
For I = 2 To UBound(TD, 1) 'boucle 1 : sur toutes les lignes I du tableau des dates TD (en partant de la seconde)
    For J = 1 To UBound(TD, 2) 'boucle 2 : sur toutes les colonnes J du tableau des dates TD
        If TD(I, J) <> "" Then 'condition : si la donnée ligne I colonne J de TD n'est pas vide
            NP = OS.Cells(9, J + 1) 'défifit le nom de la parution NP
            'définit la recherche R (recherche la date exacte dans l'onglet destination OD)
            Set R = OD.Cells.Find(TD(I, J), , xlFormulas, xlWhole)
            'si il existe au moins une occurrence trouvée, renvoie le nom de la parution NP dans la cellule correspondante
            If Not R Is Nothing Then R.Offset(0, 2).Value = NP
        End If 'fin de la condition
    Next J 'prochaine colonne de la boucle 2
Next I 'prochaine ligne de la boucle 1
End Sub
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
V
VLAD83600
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 18 mars 2017
Version d'Excel : 2016

Message par VLAD83600 » 19 mars 2017, 10:35

Encore mille merci ThauTheme c'est extra
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message