Gestion de planning, alimentation d'un planning.

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 !

Jesus2nazareth

XLDnaute Nouveau
Bonjour à tous,

Je travail sur un outil qui permettrait à un ensemble de collaborateur d'inscrire les contrats qu'ils ont dans leurs cartons dans un onglet afin d'avoir un planning prévisionnel clair dans un autre onglet.

Dans le premier onglet les collaborateurs inscriraient les contrats (et les caractèristiques des contrats) les un à la suite des autres, ligne après ligne, avec une colonne très importante de date de signature prévisionnelle (qui serait rempli sous la forme : 1er trimestre 2011, 2eme trimestre 2011...).
Cet onglet permet à tous d'avoir une vue globale du travail de chacun et de faire des tris.

Le second onglet serait une vue calendaire du premier onglet. Les contrats seraient classés par date de signature.

Question : Comment permettre de générer automatiquement le calendrier à partir du premier onglet?

Après avoir cherché des solutions j'ai l'impression que je ne peux pas faire l'économie d'une macro, mais je suis novice sur ce terrain là ...

Merci pour toute réponse ou piste

En PJ mon projet de tableau simplifié
 

Pièces jointes

Re : Gestion de planning, alimentation d'un planning.

Bonjour Jesus2nazareth, mromain,

essaye avec cette macro :

Sub transfert()
Dim Derlig1 As Integer, LigS1 As Integer, i As Integer, j As Integer, k As Byte, X As Byte

With Sheets("Liste des contrats")
Derlig1 = .Range("A65536").End(xlUp).Row
End With
For i = 2 To Derlig1
X = 0
With Sheets("Calendrier")
For j = 1 To 16 Step 8
If X > 0 Then Exit For
For k = 0 To 7 Step 2
If Right(CStr(Sheets("Liste des contrats").Cells(i, 3)), 4) = CStr(.Cells(1, j)) _
And Left(CStr(Sheets("Liste des contrats").Cells(i, 3)), 2) = CStr(.Cells(2, j + k)) Then
LigS1 = .Cells(65536, j + k).End(xlUp).Row + 1
.Cells(LigS1, j + k) = Sheets("Liste des contrats").Cells(i, 1)
.Cells(LigS1, j + k + 1) = Sheets("Liste des contrats").Cells(i, 2)
X = 1
Exit For
End If
Next k
Next j
End With
Next i
End Sub
 
Re : Gestion de planning, alimentation d'un planning.

Bonjour,

Formule matricielle en A4 de la feuille "Calendrier" :

Code:
=SI(LIGNES(A$4:A4)>NB.SI('Liste des contrats'!$C:$C;A$2&" "&INDEX(DECALER(A$1;;-MOD(COLONNE()-1;8));1));"";INDEX('Liste des contrats'!$A:$A;PETITE.VALEUR(SI(A$2&" "&INDEX(DECALER(A$1;;-MOD(COLONNE()-1;8));1)='Liste des contrats'!$C$2:$C$500;LIGNE('Liste des contrats'!$2:$500));LIGNES(A$4:A4))))

Formule matricielle en B4 :

Code:
=SI(LIGNES(B$4:B4)>NB.SI('Liste des contrats'!$C:$C;A$2&" "&INDEX(DECALER(B$1;;-MOD(COLONNE()-1;8));1));"";INDEX('Liste des contrats'!$B:$B;PETITE.VALEUR(SI(A$2&" "&INDEX(DECALER(B$1;;-MOD(COLONNE()-1;8));1)='Liste des contrats'!$C$2:$C$500;LIGNE('Liste des contrats'!$2:$500));LIGNES(B$4:B4))))

Valider par Ctrl+Maj+Entrée.

Sélectionner A4:B4 puis Copier/Collage spécial-Formules sur la plage A5:B13.

Sélectionner A4:B13 puis Copier/Collage spécial-Formules sur la plage C4😛13

A+
 

Pièces jointes

Re : Gestion de planning, alimentation d'un planning.

wahou, j'ai même le choix de la solution.
La solution de job75 à le mérite d'être utilisable de suite mais à l'air lourde à appliquer.
Je ne vois pas comment fonctionne la soluce de sousou
Je pense qu'une solution par macro serait la plus adéquat, faut que j'essaie la soluce de CBernardT.
En tout cas merci beaucoup, autant pour les réponses que pour leur rapidité.
 
Re : Gestion de planning, alimentation d'un planning.

Re,

J'y vais aussi de ma solution VBA.

Dans le code de la feuille "Liste des contrats" :

Code:
Private Sub CommandButton1_Click()
Dim cel As Range, col1 As Byte, col As Byte, lig As Long
On Error Resume Next 'au cas où, mais normalement inutile
With Sheets("Calendrier")
  .Rows("4:65536").ClearContents
  For Each cel In Range("C2", Range("C65536").End(xlUp))
    col1 = 0: col = 0 'au cas où
    col1 = Application.Match(CInt(Right(cel, 4)), .Rows(1), 0)
    col = Application.Match(Left(cel, 2), .Cells(2, col1).Resize(, 8), 0) + col1 - 1
    lig = .Cells(65536, col).End(xlUp).Row + 1
    .Cells(lig, col) = cel.Offset(, -2)
    .Cells(lig, col + 1) = cel.Offset(, -1)
  Next
  .Activate
End With
End Sub

A+
 

Pièces jointes

Dernière édition:
- 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
5
Affichages
965
Réponses
2
Affichages
2 K
Retour