Macro pour renseigner une base planning...depuis un USF

Christian0258

XLDnaute Accro
Bonjour à tout le forum,

Je souhaiterais votre aide en VBA sur une base de données pour un planning.
Fichier joint c'est plus simple, car un peu compliqué à expliquer...

Je vous remercie pour le temps que vous voudrez bien m'accorder.

Bien amicalement,
Christian.
 

Pièces jointes

  • PlanningCLv01.zip
    45.3 KB · Affichages: 78

Bebere

XLDnaute Barbatruc
Re : Macro pour renseigner une base planning...depuis un USF

bonjour Christian
allez je vais te consoler
fait le code des combobox,choisir combobox 1 à 4 et valider,écrit simplement les données
j'ai mis le code dans un dossier,tu supprimes userform de ton fichier et tu fais sous vbe(éditeur vba)menu fichier,importer un fichier
pour la suite tu expliques
à bientôt
 

Pièces jointes

  • Christian.zip
    1.9 KB · Affichages: 45
  • Christian.zip
    1.9 KB · Affichages: 51
  • Christian.zip
    1.9 KB · Affichages: 51

Christian0258

XLDnaute Accro
Re : Macro pour renseigner une base planning...depuis un USF

Bonjour à tout le forum, Bebere,

Merci Bebere, pour ton aide si précieuse.

Peux-tu regarder dans le fichier joint si j'ai fait ce tu m'as dit.

à+

Christian.
 

Pièces jointes

  • PlanningCLv03.zip
    47.7 KB · Affichages: 45
  • PlanningCLv03.zip
    47.7 KB · Affichages: 49
  • PlanningCLv03.zip
    47.7 KB · Affichages: 47

ChTi160

XLDnaute Barbatruc
Re : Macro pour renseigner une base planning...depuis un USF

Salut Christian
Bonjour Bebere
Bonjour le Fil
voila ce que j'ai mis(en modifiant le fichier de mon Ami Bebere :p) pour répondre à ta demande

Code:
Private Sub CommandButton1_Click() 'valider
Dim Cel As Range, C As Byte, DerL As Integer, Ld As Integer
Dim DateDebut As Long
Dim DateFin As Long
Dim Ligne_Depart As Integer, L As Integer
Dim Ligne_Fin As Integer
Dim Col As Byte, Col_Tab As Integer
Dim Tabtemp As Variant
Ld = 6
Application.ScreenUpdating = False

With Sheets("Base Agent")
DerL = .Range("O65536").End(xlUp).Row
 
Set Cel = .Rows(1).Find(UserForm1.ComboBox1.Value)
If Not Cel Is Nothing Then
   DateDebut = Format(UserForm1.CmbB_Datedebut.Column(1, UserForm1.CmbB_Datedebut.ListIndex), "00000")
   DateFin = Format(UserForm1.CmbB_Datefin.Column(1, UserForm1.CmbB_Datefin.ListIndex), "00000")
        C = Cel.Column
     Tabtemp = .Range(.Cells(Ld, 15), .Cells(DerL, C)).Value
     Col_Tab = UBound(Tabtemp, 2) - 2
   For L = 1 To UBound(Tabtemp, 1)
     If Format(Tabtemp(L, 1), "00000") <= DateFin And Format(Tabtemp(L, 1), "00000") >= DateDebut Then
          .Cells(5 + L, C - 1) = UserForm1.ComboBox2
            
          .Cells(5 + L, C) = UserForm1.ComboBox3
             
          .Cells(5 + L, C + 1) = UserForm1.ComboBox4
              
       
     End If
   Next
  UserForm1.ComboBox2.ListIndex = -1
   UserForm1.ComboBox3.ListIndex = -1
    UserForm1.ComboBox4.ListIndex = -1
     UserForm1.CmbB_Datedebut.ListIndex = -1
      UserForm1.CmbB_Datefin.ListIndex = -1
End If
End With

Application.ScreenUpdating = True

End Sub
j'ai lors des test ,pas compris (donc inactivé )les trois fonctions qu'il y avait
pour obtenir le quantième etc etc
subsiste un problème si l'on veut remplacer une plage déjà remplie!!!!
mais bon, cela fera peut être l'object d'une autre demande Lol
Bonne journée
 

Christian0258

XLDnaute Accro
Re : Macro pour renseigner une base planning...depuis un USF

Re, le forum, Bebere, Jean-marie,


Merci Jean-Marie pour ton aide.
Pourrais-tu, stp, me renvoyer le fichier avec ton code, chez moi ça plante sur "datedébut"...


à te lire, merci encore.
Bien amicalement,
Christian.
 

Bebere

XLDnaute Barbatruc
Re : Macro pour renseigner une base planning...depuis un USF

bonjour Christian,Jean-Marie
je n'avais fait que l'essentiel,je m'étais dis suite au prochain n°
j'ai chipé le code de Chti et je suis occupé de l'adapter
question
1)si la colonne est vide,il faut remplir toute l'année ou la sélection des 2 combobox(dates)?
2)si changement il faut commencé du 1/3/08 à la fin de l'année?
en tout cas explique nous les différentes possibilités que tu prévois
à bientôt
 

Christian0258

XLDnaute Accro
Re : Macro pour renseigner une base planning...depuis un USF

Re le forum, Bebere,

En fait, un départ on rentre la majorité des agents du 1er janv au 31 déc avec par expl 38h30, 100% et Contrem. Mais cet agent peut passer à 50 % à cpter de n'importe quelle date ou passer à 35h00 à cpter de n'importe quelle date...ect. Ce sont donc les dates qui "commandent"...lol

Mais il serai bien de pouvoir déclarer un agent également pour n'importe quelle période, je pense aux mensualité du 01/0708 au 31/07/08 et au mois d'août ou du 15/07/08 au 15/08/08 ect ect ...

Donc, Bebere, le 01/03 n'était qu'un expl.

Merci pour le temps que vous m'accordé.

à vous lire
Christian
 

ChTi160

XLDnaute Barbatruc
Re : Macro pour renseigner une base planning...depuis un USF

Re
ben chez moi , ca marche bien (avec ma version light) ?????
c'est du au recalcul de t'es 3 fonctions qui passent en revue chaque dates
à voir
il faut je pense , Inhiber dans la procèdure le recalcul de tes formules
bonne fin de soirée
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re : Macro pour renseigner une base planning...depuis un USF

re voila ce que j'ai ajouté a la procedure du bouton pour que cela marche plus vite (En rouge)
Code:
Private Sub CommandButton1_Click() 'valider
Dim Cel As Range, C As Byte, DerL As Integer, Ld As Integer
Dim DateDebut As Long
Dim DateFin As Long
Dim Ligne_Depart As Integer, L As Integer
Dim Ligne_Fin As Integer
Dim Col As Byte, Col_Tab As Integer
Dim Tabtemp As Variant
Ld = 6
Application.ScreenUpdating = False
[COLOR=red]Application.Calculation = xlCalculationManual[/COLOR]
With Sheets("Base Agent")
DerL = .Range("O65536").End(xlUp).Row
 
Set Cel = .Rows(1).Find(UserForm1.ComboBox1.Value)
If Not Cel Is Nothing Then
   DateDebut = Format(UserForm1.CmbB_DateDebut.Column(1, UserForm1.CmbB_DateDebut.ListIndex), "00000")
   DateFin = Format(UserForm1.CmbB_Datefin.Column(1, UserForm1.CmbB_Datefin.ListIndex), "00000")
        C = Cel.Column
     Tabtemp = .Range(.Cells(Ld, 15), .Cells(DerL, C)).Value
     Col_Tab = UBound(Tabtemp, 2) - 2
   For L = 1 To UBound(Tabtemp, 1)
     If Format(Tabtemp(L, 1), "00000") <= DateFin And Format(Tabtemp(L, 1), "00000") >= DateDebut Then
          .Cells(5 + L, C - 1) = UserForm1.ComboBox2
            
          .Cells(5 + L, C) = UserForm1.ComboBox3
             
          .Cells(5 + L, C + 1) = UserForm1.ComboBox4
              
       
     End If
   Next
 UserForm1.ComboBox1.ListIndex = -1
  UserForm1.ComboBox2.ListIndex = -1
   UserForm1.ComboBox3.ListIndex = -1
    UserForm1.ComboBox4.ListIndex = -1
     UserForm1.CmbB_DateDebut.ListIndex = -1
      UserForm1.CmbB_Datefin.ListIndex = -1
End If
End With
Application.ScreenUpdating = True
[COLOR=red]Application.Calculation = xlCalculationAutomatic[/COLOR]
End Sub
Bonne fin de Soirée
n'hésite pas
 

Bebere

XLDnaute Barbatruc
Re : Macro pour renseigner une base planning...depuis un USF

re
à partir du code de Chti ma proposition
explication dans fichier
à bientôt
 

Pièces jointes

  • PlanningCLv03.zip
    47.9 KB · Affichages: 52
  • PlanningCLv03.zip
    47.9 KB · Affichages: 50
  • PlanningCLv03.zip
    47.9 KB · Affichages: 51

Danix

XLDnaute Nouveau
Re : Macro pour renseigner une base planning...depuis un USF

Bonjour Christian0258, ChTi160, Bebere, Le Forum

Je suis reparti des travaux faits précédement et j'ai changé la méthode de création des jours de l'année passée en paramètre. Cela permet de rechercher la ligne correspondant à la plage de début ainsi que celle de fin, à partir de là, j'écris directement dans toutes les lignes de la plage, les données de l'userform dans les colonnes Horaires, % et titre ou fonction

cela fonctionne rapidement chez moi, malgré les formules de calcul des colonnes précédentes. Le fait de figer sur ordre le mode calcul doit aussi permettre de gagner du temps

En espérant que cela pourra t'aider

Slts
Danix
 

Pièces jointes

  • PlanningCLv04.zip
    47.4 KB · Affichages: 67

Discussions similaires

Réponses
12
Affichages
410

Statistiques des forums

Discussions
312 745
Messages
2 091 581
Membres
105 003
dernier inscrit
Aurore.B