Microsoft 365 Modifier code et format textbox

Marvin57

XLDnaute Occasionnel
Bonjour à tout le monde,

je reviens encore une fois vers vous pour demander votre aide.

Ce n'est pas facile de démonter mon fichier réel ou de composer un similaire, alors je m'en excuse d'avance.

j'ai un userform qui contient un textbox5 dans lequel je rentre un nombre de jours par exemple et lors de la validation du code ci-joint, il me place les lettres CP ou CSS dans le planning.
Ceci fonctionne très bien.

Maintenant j'aurai bien voulu que si je saisi dans ce textbox5 un nombre comme par exemple 0.5 ou 1.5 ou 3.5 etc. qu'il me place également les lettres CP ou CSS dans le planning.
Car si je saisi par exemple le 0.5 il ne m'inscrit ni les lettres CP ni les lettres CSS lors des validations du code.

VB:
Private Sub Actualiser_Planning() 'valider
  Application.ScreenUpdating = False
  Dim col%, lig%, Salarie%, CP%, Nb%
  Dim Ctrl As Object
    Nb = 0
    With Sheets("PLANNING SALARIES")
      For lig = 5 To 159 Step 14
        If Month(.Cells(lig, 2)) = Month(Me.TextBox2) Then
          For col = 2 To 32
            If DateSerial(Year(.Cells(lig, 2)), Month(.Cells(lig, 2)), col) = CDate(Me.TextBox2.Value) Then
              For Salarie = lig + 1 To lig + 11
                If .Cells(Salarie, 1).Value = Me.ComboBox1.Value Then
                   For CP = col + 1 To col + CInt(Me.TextBox5.Value)
                    Nb = Nb + 1
                    If Me.OptionButton1 = True Then
                      .Cells(Salarie, CP) = "CP"
                    Else
                      .Cells(Salarie, CP) = "CSS"
                    End If
                    If CP = .Cells(lig, Columns.Count).End(xlToLeft).Column Then
                      If Nb >= CInt(Me.TextBox5.Value) Then Exit Sub
                      Salarie = Salarie + 14
                      CP = 2
                      If Me.OptionButton1 = True Then
                        .Cells(Salarie, CP) = "CP"
                      Else
                        .Cells(Salarie, CP) = "CSS"
                      End If
                      Nb = Nb + 1
                    End If
                    If Nb >= CInt(Me.TextBox5.Value) Then Exit Sub
                  Next CP
                  Exit Sub
                End If
              Next Salarie
            End If
          Next col
        End If
      Next lig
    End With

  Sheets("PLANNING SALARIES").Activate
  Unload Me
 
End Sub


Auriez vous S'il vous plaît une idée ce qu'il faudrait changer ou ajouter dans le code ci joint.

Je vous dis un Grand Merci à l'avance.

Marvin57
 

ChTi160

XLDnaute Barbatruc
Re
pas évident de reproduire ton terrain de jeu Lol
tu as :
VB:
With Sheets("PLANNING SALARIES")
      For lig = 5 To 159 Step 14
        If Month(.Cells(lig, 2)) = Month(Me.TextBox2) Then
          For col = 2 To 32
donc des dates dans la colonne "B" (2) d'où Month(.Cells(lig, 2))
si tu trouve une date dont le mois correspond a celui de ton TextBox2
tu Boucles sur For col = 2 To 32 puis tu fais
Code:
If DateSerial(Year(.Cells(lig, 2)), Month(.Cells(lig, 2)), col) = CDate(Me.TextBox2.Value) Then
donc après avoir testé la Cellule If Month(.Cells(lig, 2)) sur le Mois
tu définis une date à partir de
Code:
DateSerial(Year(.Cells(lig, 2)), Month(.Cells(lig, 2)), col)
donc Col commence à 2 jusqu'a 32 sont ce des Jours ?
si oui pourquoi pas 1 à 31 ?

Jean marie
 

Marvin57

XLDnaute Occasionnel
Re
pas évident de reproduire ton terrain de jeu Lol
tu as :
VB:
With Sheets("PLANNING SALARIES")
      For lig = 5 To 159 Step 14
        If Month(.Cells(lig, 2)) = Month(Me.TextBox2) Then
          For col = 2 To 32
donc des dates dans la colonne "B" (2) d'où Month(.Cells(lig, 2))
si tu trouve une date dont le mois correspond a celui de ton TextBox2
tu Boucles sur For col = 2 To 32 puis tu fais
Code:
If DateSerial(Year(.Cells(lig, 2)), Month(.Cells(lig, 2)), col) = CDate(Me.TextBox2.Value) Then
donc après avoir testé la Cellule If Month(.Cells(lig, 2)) sur le Mois
tu définis une date à partir de
Code:
DateSerial(Year(.Cells(lig, 2)), Month(.Cells(lig, 2)), col)
donc Col commence à 2 jusqu'a 32 sont ce des Jours ?
si oui pourquoi pas 1 à 31 ?

Jean marie
Re
Merci de vous intéresser à mon sujet.
Je vois cela demain matin et je ferai un résumé pour voir plus clair. Là je suis au travail.
A+ et bonne nuit.
Marvin57
 

ChTi160

XLDnaute Barbatruc
Re
tu utilise deux fois la même variable "lig" dans des Boucle imbriquées cela peut peut être la cause
Tu as :
Code:
For lig = 5 To 159 Step 14
puis si tu trouves la date tu fais
Code:
 For Salarie = lig + 1 To lig + 11
donc si lig est égal à 5 au début de Boucle tu passes à lig + 1 To lig + 11 cela perturbe peut être la valeur de lig
change l'une des variables Lig par exemple par Ligne .tu testes et tu nous dis .
Jean marie
 

Marvin57

XLDnaute Occasionnel
Re
pas évident de reproduire ton terrain de jeu Lol
tu as :
VB:
With Sheets("PLANNING SALARIES")
      For lig = 5 To 159 Step 14
        If Month(.Cells(lig, 2)) = Month(Me.TextBox2) Then
          For col = 2 To 32
donc des dates dans la colonne "B" (2) d'où Month(.Cells(lig, 2))
si tu trouve une date dont le mois correspond a celui de ton TextBox2
tu Boucles sur For col = 2 To 32 puis tu fais
Code:
If DateSerial(Year(.Cells(lig, 2)), Month(.Cells(lig, 2)), col) = CDate(Me.TextBox2.Value) Then
donc après avoir testé la Cellule If Month(.Cells(lig, 2)) sur le Mois
tu définis une date à partir de
Code:
DateSerial(Year(.Cells(lig, 2)), Month(.Cells(lig, 2)), col)
donc Col commence à 2 jusqu'a 32 sont ce des Jours ?
si oui pourquoi pas 1 à 31 ?

Jean marie
Juste pour information, oui mes colonnes des jours débutent en colonne b jusqu'à 32.
 

Discussions similaires

Réponses
17
Affichages
337

Statistiques des forums

Discussions
312 209
Messages
2 086 270
Membres
103 168
dernier inscrit
isidore33