Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 corriger macro planning

reve24

XLDnaute Occasionnel
Bonjour

J'ai une erreur dans la macro que je ne comprends pas.
Les valeurs date entrée de la feuil1 se reportent que jusqu'au 31 janvier
Pourquoi?
J ai crée un gestionnaire de nom ""calendrier"" non cela ne marche pas
regarder macro
merci de votre aide d avance
 

Pièces jointes

  • DeroulantYvon.xlsm
    27.6 KB · Affichages: 5

reve24

XLDnaute Occasionnel
j'ai supprimer +1, j'ai effacer la ligne rien

j'en suis ici et toujours rien

Sub macro3()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim i As Long, jour As Long
Dim nom As String, dateDebut As Date, dateFin As Date
Dim plateforme As String, nbreNuit As Long, nbrePersonne As Long, prixNet As Double
Dim datePlanning As Date
Dim colorIndex As Long
Dim colors() As Variant

Set ws1 = ThisWorkbook.Sheets("Feuil1")
Set ws2 = ThisWorkbook.Sheets("Feuil2")

colors = Array(, 4, 6, 7, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 26, 28, 33, 38, 43, 44, 54) ' Exemple de couleurs
colorIndex = 0

' Parcourir les lignes de Feuil1
For i = 2 To ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row
nom = ws1.Cells(i, 1).Value ' Colonne AA
dateDebut = ws1.Cells(i, 2).Value ' Colonne BB
dateFin = ws1.Cells(i, 3).Value ' Colonne CC
plateforme = ws1.Cells(i, 4).Value ' Colonne DD
nbreNuit = ws1.Cells(i, 5).Value ' Colonne EE
nbrePersonne = ws1.Cells(i, 6).Value ' Colonne FF
prixNet = ws1.Cells(i, 7).Value ' Colonne GG

If IsDate(dateDebut) And IsDate(dateFin) Then
' Utiliser la même couleur pour toute la plage de dates
Dim startColumn As Long


' Modifier la boucle pour inclure toutes les dates entre dateDebut et dateFin
For datePlanning = dateDebut To dateFin
jour = Day(datePlanning)

' Vérifier si la date est dans la plage du calendrier
If jour >= 1 And jour <= 366 Then
' Remplir la cellule de la journée
ws2.Cells(7, jour + 1).Value = nom & " / " & plateforme & " / " & nbreNuit & "n" & " / " & nbrePersonne & "p" & " / " & prixNet & "€"

' Appliquer la couleur
ws2.Cells(7, jour + 1).Interior.colorIndex = colors(colorIndex Mod UBound(colors) + 1)
End If
Next datePlanning

colorIndex = colorIndex + 1
End If
Next i

' Orientation du texte à 90°
ws2.Cells(7, 1).Resize(1, 32).Orientation = 90
End Sub
 

vgendron

XLDnaute Barbatruc
C'est pas le +1 qui pose problème.. c'est le day(datedebut)

ce test que tu as mis montre que tu n'as pas compris ce que te retournait la fonction day()
VB:
If jour >= 1 And jour <= 366 Then
day retourne le NUMERO de jour de la date ==>tu auras toujours entre 1 et 31
et donc.; ta colonne start sera toujours positionnée sur le mois de janvier...
 

Jacky67

XLDnaute Barbatruc
Bonjour,
Des lignes vides dans un tableau structuré n'est pas une bonne idée
Travailler avec le jour d'une date dans ce cas n'est pas valide.
Une proposition avec
VB:
jour = Application.Match(CLng(dateCourante), ws2.[6:6], 0)
 

Pièces jointes

  • DeroulantYvon.xlsm
    40.1 KB · Affichages: 5

Discussions similaires

Réponses
6
Affichages
732
Réponses
6
Affichages
193
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…