Insertion ligne planning

Holly

XLDnaute Nouveau
Bonjour à tous,

Dans mon fichier mit en PJ,

Je souhaiterai qu'en fonction de la durée du chantier présente dans mon Userform (UF_Planning), insérer le nombre de lignes correspondant à la durée dans la feuille "Récapitulatif".

Par exemple, si ma durée dans mon Userform est égale à 05:00, j'aimerai que 5 lignes s'insèrent dans ma feuille "Récapitulatif", avec la répétition 5 fois du nom du chantier, de la date de début, du nom du sous-traitant, du type de pose ainsi que la durée.

J'ai essayé de mettre en place une boucle (Do while) qui permet de prendre en compte le jour (du lundi au vendredi) ainsi que l'heure ouvré (8h-12h, 14h-18h) :

Voici ce que j'ai essayé :

Sub GenererPlanning()
Dim VHeureDebut As Integer
Dim VDurée As Integer
Dim VPassage As Integer
Sheets("Renseignements").Activate
Range("E3").Value = VHeureDebut
Do While VPassage <= VDurée
If VHeureDebut = 12 Then
VHeureDebut = VHeureDebut + 2
End If
If VHeureDebut = 13 Then
VHeureDebut = VHeureDebut + 1
End If
If VHeureDebut >= 18 Then
VHeureDebut = VHeureDebut + 14
End If
VHeureDebut = VHeureDebut + 1
VPassage = VPassage + 1
Loop
End Sub


Un grand merci pour votre aide !
 

Pièces jointes

  • Chantier UserForm y (1).xlsm
    120.1 KB · Affichages: 25
  • Chantier UserForm y (1).xlsm
    120.1 KB · Affichages: 31

vgendron

XLDnaute Barbatruc
Re : Insertion ligne planning

Bonjour,

est ce que tu pourrais préciser le fonctionnement de ton fichier
quel formulaire alimente quelle feuille
quelle feuille alimente quel formulaire

feuille récapitulatif: tu saisis quelque chose dans le petit tableau? si oui. ca va ou après?
Feuille renseignements: c'est censé etre rempli par ton formulaire UF_Planning? si oui pourquoi est ce que ce sont justement les données de la colonne A qui alimentent la liste "Nom du chantier"?
du coup. si on choisit un nom de chantier. toutes les autres infos sont remplies..
donc.. où vas tu modifier la durée ? directement dans ce meme formulaire?

en gros; la feuille renseignemetn semble alimenter le USF que tu veux utiliser pour alimenter la feuille renseignements..??
ensuite. dans ta macro que tu as posté: tu as des variables VPassage, VDurée, Vheure.... toutes à zero.. ce serait pas plutot les valeurs des Textbox de ton formulaire?

un peu d'éclaircissement nous permettrait surement de t'aider.
a+
 

vgendron

XLDnaute Barbatruc
Re : Insertion ligne planning

Re,

je viens de relire ton post. en fait, tu souhaites bien alimenter la feuille RECAP et non Renseignements;.
donc. si je comprend bien: la feuille Renseignement alimente le Combo Nom Chantier du USF
puis tu alimentes la feuille récap..

ce qui te donnerait un truc du genre
Code:
Private Sub CB_Generer_Click()


Dim VHeureDebut As Integer
Dim VDurée As Integer
Dim VPassage As Integer

'Sheets("Renseignements").Activate
'Range("E3").Value = VHeureDebut

Sheets("Récapitulatif").Activate
Range("A3") = CB_Chantier
Range("B3") = TB_DateDebut
Range("C3") = TB_Duree
Range("D3") = TB_SousTraitant
Range("E3") = TB_TypeChantier

Range("A3:E" & 3 + TB_Duree).FillDown
ActiveSheet.ListObjects("tblDonnées").Resize Range("$B$2:$F$" & 3 + TB_Duree)

'Do While VPassage <= VDurée
'
'If VHeureDebut = 12 Then
'VHeureDebut = VHeureDebut + 2
'End If
'
'If VHeureDebut = 13 Then
'VHeureDebut = VHeureDebut + 1
'End If
'
'If VHeureDebut >= 18 Then
'VHeureDebut = VHeureDebut + 14
'End If
'
'VHeureDebut = VHeureDebut + 1
'VPassage = VPassage + 1
'Loop

End Sub

à mettre le code du userform
par contre, pour cette partie
J'ai essayé de mettre en place une boucle (Do while) qui permet de prendre en compte le jour (du lundi au vendredi) ainsi que l'heure ouvré (8h-12h, 14h-18h) :
besoin de précisions
 
Dernière édition:

vgendron

XLDnaute Barbatruc
Re : Insertion ligne planning

j'en profite pour regarder ta feuille "Planning"
j'ai pas bien compris à quoi servait ta cellule F3
selon la valeur que tu y mets, la date en G3 n'est pas positionnée à la même place.. et donc. ne correspond pas forcément au bon jour (Lundi mardi...)
peut etre modifies tu la cellule F3 jusqu'à avoir le jour au bon endroit?

dans ce cas: je te propose cette formule en C5
=SemaineDu-JOURSEM(SemaineDu;2)+COLONNES($C$1:C1)
et tu tires vers la droite:
plus besoin de la cellule F3, ni des calculs masqués ligne 4
 

vgendron

XLDnaute Barbatruc
Re : Insertion ligne planning

Re

Voir PJ

va voir les commentaires dans le code
fais tes essais et dis moi ce qui ne va pas

et bon week end ! ;-)
 

Pièces jointes

  • Chantier UserForm y (1).xlsm
    123.3 KB · Affichages: 41
  • Chantier UserForm y (1).xlsm
    123.3 KB · Affichages: 40

Holly

XLDnaute Nouveau
Re : Insertion ligne planning

Bonjour,

Impressionnant ! Merci pour votre grand travail, c'est exactement ce que je recherchais. Je suis désolée de ne pas avoir pu répondre plus tôt, j'étais en déplacement.

Pour la partie concernant la boucle "Do while", j'aimerai que cela soit comme dans ma Userform InfoChantier, c'est à dire que lorsqu'on saisie une date de début, si cela tombe un W-end ou un jour férié, cela soit invalide.
J'ai vu dans le VBA que vous avez éviter les w-end mais cependant cela ne marche pas quand j'essaie de renseigner un vendredi avec une durée de 10h par exemple.

J'aurai également aimé savoir si c'était possible que dans la feuille "récapitulatif" les données ne s'écrasent pas au fur et à mesure, pour avoir plusieurs plages horaires en même temps ?

Encore merci pour votre aide précieuse, vous m'apportez beaucoup.
 

vgendron

XLDnaute Barbatruc
Re : Insertion ligne planning

Hello !!

pour le controle de la date de début, j'ai repris tes fonctions "EstValide"
pour l'histoire du Début au vendredi, j'ai corrigé
pour garder l'historique des différentes plages horaires. idem

en attente de tes prochains commentaires
PS: tu verras dans les boucles de nombreux indices: +1 -1 +3 -2.. qui servent à compenser le fait que je ne sais pas encore comment acceder à un item particulier de la table
en fait. je mixe les indices de table avec le numéro de ligne Excel..
Ex: l'item n°3 de la table est en ligne 5 excel... d'ou le +2 pour compenser..
C'est pas très propre. mais ca fonctionne...
j'essaie de voir pour rectifier.. ;-)
 

Pièces jointes

  • Chantier UserForm y (2).xlsm
    127.2 KB · Affichages: 25

vgendron

XLDnaute Barbatruc
Re : Insertion ligne planning

Re
mise à jour avec cette histoire d'indice un peu plus propre..
et ajout de tests de validité des heures et dates
dans le cas ou tu selectionnes un chantier et que tu génères directement sans modifier la moindre data il faut controler les validités.
ex: avec le fichier posté version 3:
choisis le chantier "Test Creteil"
la date du 15/04 est remplie: OK
et l'heure de début est 12:00: PAS OK:
le seul moyen d'avoir ce 12:00 ici, c'est de le saisir manuellement directement dans la feuill Renseignements
car normalement cette heure aurait du être refusée
--> à la saisie dans le USF de la feuille Info
--> dans le userform de génération: le test est effectué SI tu cliques dans le TXBox
 

Pièces jointes

  • Chantier UserForm y (3).xlsm
    127.9 KB · Affichages: 26

vgendron

XLDnaute Barbatruc
Re : Insertion ligne planning

version 4 avec "amélioration" pour saisie des dates par click dans calendrier
je regarde pour faire la meme chose avec les heures..
à terme. c'est pour simplifier la gestion des formats..tu auras remarqué que dans le tableau généré, les heures sont parfois du style
08:00 puis 08 AM ou 10:00:00
ce qui pose des soucis pour les controles de validité
 

Pièces jointes

  • Chantier UserForm y (4).xlsm
    128 KB · Affichages: 31

Holly

XLDnaute Nouveau
Re : Insertion ligne planning

Bonjour,

Je suis impressionnée, bravo ! La version 3 marche parfaitement, c'est exactement ce que je voulais.
Malheureusement je n'arrive pas à faire fonctionner la version 4, cela m'affiche un message : "Impossible de charger l'objet car il n'est pas présent sur cette machine" lorsque j'ouvre le classeur.

J'ai quand même pu voir le calendrier dans le vba, mais je n'ai du coup pas réussi à le faire fonctionner..

En tout cas un grand merci pour votre aide !
 

vgendron

XLDnaute Barbatruc
Re : Insertion ligne planning

Hello

oui, j'ai oublié.. pour les calendriers, il faut activer une référence dans le projet VBA:
1) ouvrir VBA: Alt + F11
2) outils- références
3) cocher la ref: "Microsoft Calendar Control 2007

et voici la version 5.. je ne sais meme plus ce que j'ai fais de différent avec la v4: sans doute le controle du format de l'heure
qui doit etre saisie sous cette forme: hh:mm

Bonne journée ;-)
 

Pièces jointes

  • Chantier UserForm y (5).xlsm
    129.7 KB · Affichages: 50

Holly

XLDnaute Nouveau
Re : Insertion ligne planning

J'ai essayé de faire ce que vous me dites, mais la référence "microsoft calendar control 2007" est écrite comme "MANQUANT" et même en cochant, cela ne marche pas du coup...

Bonne journée à vous aussi !
 

vgendron

XLDnaute Barbatruc
Re : Insertion ligne planning

ha mince..
du coup. je ne sais pas quelle référence est concernée..
voici celles qui sont actives chez moi..
peut etre que.

Visual Basic For Applications
Microsoft Excel 12.0 Object Library
Microsoft Office 12.0 Object Library
Microsoft Forms 2.0 Object Library
Microsoft Calendar Control 2007
OLE Automation
Microsoft Windows Common Controls-2 6.0 (SP6)

sinon, sous Excel directement: Bouton Office, Options Compléments
Compléments Excel: TOUT est coché
 

Holly

XLDnaute Nouveau
Re : Insertion ligne planning

Hello !

Je suis entrain de me bagarrer avec un format monétaire qui ne veut pas marcher... J'ai essayé une multitude de codes différents mais rien ne marche, le contenu de la cellule reste en format texte, ou en format standard. (le format monétaire doit se mettre sur les forfaits et les prix)

La Userform se trouve sur la feuille des coûts (d'ailleurs, tout se passe sur celle-ci) ! Et les données doivent s'afficher dans la base de données sur cette feuille.

Avez-vous une solution ?


Ps : je travaille sur cette version sans le calendar que vous m'aviez confié, je rassemblerais les fichiers qu'une fois terminés.


Merci d'avance !
 

Pièces jointes

  • Planning (4).xlsm
    155 KB · Affichages: 26

Discussions similaires

Réponses
6
Affichages
236