Planning semaine à partir d'une BDD
Bonjour,
Je souhaite obtenir un planning, à partir d'une base de donnée dans le même classeur.
J'ai essayé une formule, mais elle ne fonctionne pas toujours voir pas du tout ...
Si quelqu'un peut m'éclairer, sachant qu'il y a une liaison entre le numero de semaine et le calendrier qui s'affiche.
Vous comprendrez en regardant le fichier.
Je veux que ça s'actualise quand je change le numéro de semaine aussi.
Si ce n'est pas possible par formule excel, et que quelqu'un connait une macro capable de réaliser ce que je demande, je suis preneur
Merci
Bonsoir,
Formule en C6 de la feuille "Planning" et à étirer sur la droite :
=DATE($B$3;1;1)+7*($C$3-1)+7-JOURSEM(DATE($B$3;1;1)+7*($C$3-1);2)+COLONNE()/3Bonsoir
Un essai par macro quand on change le numéro de la semaine
Cordialement
Merci beaucoup pour vos réponses, c'est vraiment ce que je recherché !
En fait j'ai un soucis :
J'ai utilisé ton programme "recreation59" et je l'ai adapté dans mon fichier pour l'utiliser à l'aide d'un bouton click dans un userform.
Jusque là pas de problème !
Par contre ma base de donnée s'écrit aussi automatiquement par userform ... Et lorsqu'une ligne s'ajoute, et que je click sur mon bouton Planning pour l'obtenir, il ne se met pas à jour. Il garde les anciennes valeurs mais pas les nouvelles lignes entrées
Et j'ai remarqué que lorsque j'effectue simplement un double click dans la cellule ajoutée (dans la base de donnée), et que je lance le Planning --> Ca Fonctionne
Mais je suis obligé de double clicker dans les cellules de date et je ne comprends pas pourquoi :
Deux options : - Soit il existe une fonction pour pouvoir double clicker automatiquement dans les cellules sélectionnées qui correspondent aux dates
- Soit il faut corriger ce "bug" mais je sais pas comment
Private Sub Worksheet_Change(ByVal Target As Range)
Worksheets("Archives").Visible = True
Dim i, j As Integer
Dim Intersection As Range, Plage As Range
Set Plage = Range("U3")
Set Intersection = Application.Intersect(Target, Plage)
If Intersection Is Nothing Then
'MsgBox "La cellule visée n'est pas dans la plage !"
Else
' on enlève les données précedentes
Range("C6:Q100").Select ' à modifier si beaucoup de données
Selection.ClearContents
With Sheets("Archives")
j = 6
DernLigne = Sheets("Archives").Range("D" & Rows.Count).End(xlUp).Row + 1
For i = 2 To DernLigne
If Sheets("Archives").Cells(i, 4) = Sheets("Planning").Cells(3, 3) Then
Application.DoubleClick
Sheets("Planning").Cells(j, 3) = Sheets("Archives").Cells(i, 1)
Sheets("Planning").Cells(j, 4) = Sheets("Archives").Cells(i, 6)
Sheets("Planning").Cells(j, 5) = Sheets("Archives").Cells(i, 9)
j = j + 1
End If
Next
j = 6
For i = 2 To DernLigne
If Sheets("Archives").Cells(i, 4) = Sheets("Planning").Cells(3, 6) Then
Application.DoubleClick
Sheets("Planning").Cells(j, 6) = Sheets("Archives").Cells(i, 1)
Sheets("Planning").Cells(j, 7) = Sheets("Archives").Cells(i, 6)
Sheets("Planning").Cells(j, 8) = Sheets("Archives").Cells(i, 9)
j = j + 1
End If
Next
j = 6
For i = 2 To DernLigne
If Sheets("Archives").Cells(i, 4) = Sheets("Planning").Cells(3, 9) Then
Application.DoubleClick
Sheets("Planning").Cells(j, 9) = Sheets("Archives").Cells(i, 1)
Sheets("Planning").Cells(j, 10) = Sheets("Archives").Cells(i, 6)
Sheets("Planning").Cells(j, 11) = Sheets("Archives").Cells(i, 9)
j = j + 1
End If
Next
j = 6
For i = 2 To DernLigne
If Sheets("Archives").Cells(i, 4) = Sheets("Planning").Cells(3, 12) Then
Application.DoubleClick
Sheets("Planning").Cells(j, 12) = Sheets("Archives").Cells(i, 1)
Sheets("Planning").Cells(j, 13) = Sheets("Archives").Cells(i, 6)
Sheets("Planning").Cells(j, 14) = Sheets("Archives").Cells(i, 9)
j = j + 1
End If
Next
j = 6
For i = 2 To DernLigne
If Sheets("Archives").Cells(i, 4) = Sheets("Planning").Cells(3, 15) Then
Application.DoubleClick
Sheets("Planning").Cells(j, 15) = Sheets("Archives").Cells(i, 1)
Sheets("Planning").Cells(j, 16) = Sheets("Archives").Cells(i, 6)
Sheets("Planning").Cells(j, 17) = Sheets("Archives").Cells(i, 9)
j = j + 1
End If
Next
End With
With Sheets("Planning")
Cells(3, 10).Select
End With
End If
End SubBonjour
Je suis désolée mais je n'arrive pas à comprendre le problème avec tes commentaires.
si tu peux, ajoute un fichier exemple
Merci
Oui ça ne doit pas être évident à comprendre, je vais essayer de faire plus simple car je ne peux pas déposer le fichier, c'est un document proféssionnel et je n'ai pas l'autorisation.
Je vais essayé de me débrouiller comme je peux pour me faire comprendre :
Dans l'ordre de fonctionnement :
1. Un utilisateur compléte un ensemble de donnée dans un Userform.
2. Il valide
3. L'ensemble des données sont ensuite réparties dans la base de donnée sur une nouvelle ligne par le code suivant :
'sélection de la ligne sur laquelle écrire (la première vide sans compter la col numéro)
num = Sheets("Archives").Range("B65536").End(xlUp).Row + 1 'on part du bas de la colonne, on cherche
'activation de la feuille Archives
Sheets("Archives").Activate
'inscription des données récupérées du formulaire validé dans la feuille Archives
Range("B" & num).Value = "DDT"
Range("C" & num).Value = CDate(TxtDate.Value)
Range("D" & num).Value = TxtDateP
Range("F" & num).Value = CboDemandeur.Value
Range("G" & num).Value = ComboBox1.Value
...4. L'utilisateur souhaite avoir un aperçu du planning : Il click sur un simple bouton (dans un userform) et j'ai incorporé ta macro dans le code avec un choix par semaine ( Il choisit la semaine et le numéro est inscrit dans la case semaine de la feuille Planning)
5. L'utilisateur a l'aperçu du Planning.
Mais les informations qui ont été entrées en (3) sur la base de donnée ne sont pas visibles dans le planning.
C'est là qu'il y a un "Bug" .
Pour qu'on puisse les apercevoir, il faut que je réalise simplement un double click dans la cellule de la colonne 'date prévisionnelle' de la nouvelle ligne insérée
Une fois le double click, je relance le système et le planning est rafraichit et fonctionne.
C'est un drole de "BUG", mais je ne sais pas pourquoi. A savoir si on ajoute des lignes par glisse dans ton fichier, cela fonctionne ! Voilà pourquoi je ne comprends pas pourquoi cela ne fonctionne pas quand la maj de la base de donnée est automatique.
Je pense à un bug plutot, c'est pour cela que je demande s'il est possible de programmer un double click sur les cellules 'date prévisionnelle' pour que le planning rafraichissent les nouvelles données
J'espère avoir été plus clair :s
Merci
Peut-être un problème de format de la date prévisionnelle
Range("C" & num).Value = CDate(TxtDate.Value)
Range("D" & num).Value = TxtDateP
J'ai remarqué que si je copie colle une ligne, je n'ai pas ce problème ! Mais si elle s'ajoute par mon système ça bug, obligé de double click
--> Donc ce n'est pas un problème de format je pense
C'est vraiment énervant ce petit bug ...
Sinon tu connais une fonction qui puisse simplement double clicker sur les cellules automatiquement ? Par le programme "Planning" ?
Peut être que ca suffirer à corriger
Merci beaucoup
Je viens d'essayer en recherchant par nom, plutot que par date. (Demandeur)
Et ca fonctionne, même en ajoutant automatiquement une nouvelle ligne.
Donc la raison, c'est le format date ... Ca fonctionne pour les dates où les cellules ont été modifié (double click ou autre), mais pas pour les nouvelles ... Pourquoi ? j'en sais rien
J'ai trouvé le problème il suffisait d'ajouter Cdate :
Range("C" & num).Value = CDate(TxtDate.Value)
Range("D" & num).Value = CDate(TxtDateP.Value)
Sans cela, il ne comprenait pas le format date s'il n'y avait pas de modification dans la cellule.
Merci pour ton aide