Macro pour transformer des jours de livraisons en dates pour une année...

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Christian0258

XLDnaute Accro
Bonjour à tout le forum,

Je souhaiterais votre aide pour l'écriture d'une macro...
J'ai un tableau ou je coche en face de chaque fournisseur ses jours de livraisons semaine, je voudrais transformer ces jours, en dates, et les envoyer dans une autre feuille (même classeur)...

voir fichier...

Merci, à nouveau, pour votre aide si précieuse.

Bien à vous,
Christian
 

Pièces jointes

Re : Macro pour transformer des jours de livraisons en dates pour une année...

Bonjour Christian0258,

Cela me parait difficile ...
sachant que dans ton tableau on ne sait pas quelle semaine est concernée !?

A+
 
Re : Macro pour transformer des jours de livraisons en dates pour une année...

Bonjour à tous,

Désolé collègue et néanmoins ami... Je ne comprends pas ta demande...
Je vais déjeuner et repasserai voir les réponses fournies.

A++
A + à tous
 
Re : Macro pour transformer des jours de livraisons en dates pour une année...

Bonjour Christian,
Bruno🙂
JC🙂
Vois si cette première ébauche te conviens.
J'ai nommé des cellules et plages de cellules dans les différentes feuilles.

A+

[Edit] commentaire rajoutés dans le code de la feuille
 
Dernière modification par un modérateur:
Re : Macro pour transformer des jours de livraisons en dates pour une année...

Re, le forum, Bruno, Jean-Claude et Hasco,

Merci à vous, pour le temps que vous avez bien voulu m'accorder.

Hasco, c'est parfait, beau boulot, ça me va très bien, merci beaucoup.

Bien à vous,
Christian
 
Re : Macro pour transformer des jours de livraisons en dates pour une année...

Re,

Attention, Christian, c'est juste une ébauche, je n'ai pas traité le cas où tu décoche une cellule. Que doit-il se passer dans ce cas là?

A+
 
Dernière modification par un modérateur:
Re : Macro pour transformer des jours de livraisons en dates pour une année...

Bonjour à tous,
Salut Ges 🙂,

Ah ben j'étais loin du compte...
Les fériés ne semble pas se générer au changement d'année.

A++
A + à tous
 
Re : Macro pour transformer des jours de livraisons en dates pour une année...

Re, le forum, Hasco,

Concernant le cas où l'on décoche, ce serai bien d'annuler le résultat
dans la feuille "Calendrier livraisons".

Encore merci pour le boulot.

Bien à vous,
Christian
 
Re : Macro pour transformer des jours de livraisons en dates pour une année...

Bonjour,

He bien, essaie de faire la boucle mais au lieu de mettre le Produit dans la cellule, tu l'enlèves

Comme ceci Peut-être (avec vérification de la correspondance du produit et de la cellule avant effacement)
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True    'Permet de ne pas séléctionner la cellule
    If Target.Count > 1 Then Exit Sub
    If Not Application.Intersect(Target, Range("Jours_Livraisons").Offset(, 2).Resize(, 7)) Is Nothing Then    ' Si la cellule est dans La colonne (K)
        Target = IIf(Target = "þ", "o", "þ")    'si Cellule = "þ" alors coché sinon décoché
        'Si la cellule est cochée
        Dim fournisseur As String, Produit As String, idxJour As Variant, colFour As Long, idxLig As Variant
        'Récupération des éléments necessaires
        fournisseur = Cells(Target.Row, Range("Jours_Livraisons").Column)
        Produit = Cells(Target.Row, Range("Jours_Livraisons").Column + 1)
        'idxJour servira à retrouver le premier jour de l'année
        idxJour = Array(vbMonday, vbTuesday, vbWednesday, vbThursday, vbFriday, vbSaturday, vbSunday)(Target.Column - Range("Jours_Livraisons").Column - 2)
        With Sheets("Calendrier Livraisons")
            On Error Resume Next
            'Chercher la colonne correspondant au fournisseur
            colFour = .Rows(5).Find(what:=fournisseur, LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByColumns, MatchCase:=False).Column
            'Si elle n'est pas trouvée on va tenter de la créer
            If colFour = 0 Then
                colFour = .Cells(5, .Columns.Count).End(xlToLeft).Column + 1
                .Cells(5, colFour) = fournisseur
            End If
            On Error GoTo 0
            If colFour = 0 Then
                MsgBox "Le fournisseur : '" & fournisseur & "' n'a pas été trouvé ni pu être créé!", vbExclamation, "Fournisseur introuvable"
                Exit Sub
            End If
            'Cherche l'indes de range de la date correspondant au premier jour dans l'année (lundi à dimanche)
            idxJour = Application.Match(CLng(PremierLD(idxJour, , Params.Range("An_N"))), Sheets("Calendrier Livraisons").Range("Les_Dates"), 0)
            Dim i As Integer
            'Balaie la plage des dates
            For i = idxJour To .Range("Les_Dates").Rows.Count Step 7
                'Si la cellule de la colonne 1 contient une valeur pouvant être interprétée comme une date
                If IsDate(.Cells(5 + i, 1)) Then
                    'Si la date n'est pas férié
                    If Application.CountIf(Params.Range("Dates_Fériés"), .Cells(5 + i, 1)) = 0 Then
                        'On place le produit dans la ligne et la colonne idoines
                        With .Cells(5 + i, colFour)
                            If Target = "þ" Then
                                .Value = Produit
                            Else
                                If Target = Produit Then .ClearContents
                            End If
                        End With
                    End If
                End If
            Next
        End With
        Cancel = True
    End If
End Sub

A+
 
Dernière modification par un modérateur:
Re : Macro pour transformer des jours de livraisons en dates pour une année...

Re, le forum, Hasco,

Après essai, si on enlève tout dans la feuille "Jours de livraison" ça n'a aucune incidence sur la feuille "Calendrier livraisons".

Bien à toi,
à te lire.

Christian
 
Re : Macro pour transformer des jours de livraisons en dates pour une année...

Re,

Non cela ne va que dans un sens. Si tu veux on peut faire une macro (à laquelle je m'attendais d'ailleur) pour tout décocher dans la feuille "Jours de livraison" et effacer les données idoines de la feuille "Calendrier livraisons".

As-tu vu mon post précédent?

VB:
Sub RAZ()
    Application.EnableEvents = False
        With Sheets("Jours de livraisons").Range("Jours_Livraisons")
            .Offset(, 2).Resize(, 7).Value = "o"
        End With
        With Sheets("Calendrier Livraisons")
            .Range("Cols_Fournisseurs").Resize(.Range("Les_Dates").Rows.Count).ClearContents
        End With
    Application.EnableEvents = True
End Sub

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
221
Réponses
2
Affichages
243
Retour