Problème à faire marcher ma macro

Résolu/Fermé
volcolm Messages postés 13 Date d'inscription vendredi 25 janvier 2013 Statut Membre Dernière intervention 6 février 2013 - Modifié par volcolm le 5/02/2013 à 20:41
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 6 févr. 2013 à 22:45
Bonjour,


Quelqu'un pourrait me dire ce qui cloche dans ma macro???? je suis à sec depuis bien longtemps et je commence à désespérer !
"
Private Sub CmdAnnuler_Click()
Unload Me
End Sub

Private Sub CmdOK_Click()
Dim ligne As Integer

If Opérateur.Value = "Nom du Déclarant" Then
MsgBox "Veuillez vous identifier", vbOKOnly, "Opérateur manquant"
Opérateur.SetFocus
Exit Sub
ElseIf qte.Value = "" Then
MsgBox "Veuillez saisir la quantité d'armature produite", vbOKOnly, "quantité manquante"
qte.SetFocus
Exit Sub
End If
'Place les valeurs sur le tableau excel'
With Sheets("données production")
ligne = .Cells(Rows.Count, 4).End(xlUp).Row + 1
.Unprotect
.Cells(ligne, 1).Value = defweek.week
.Cells(ligne, 2).Value = Format(Date, "dd/mm/yy")
.Cells(ligne, 3).Value = Format(Time, "hh:mm")
.Cells(ligne, 4).Value = saisiqte.Opérateur
.Cells(ligne, 5).Value = deféquipe.équipe
.Cells(ligne, 6).Value = saisiqte.qte
.Protect
End With

Unload Me

End Sub

'défini la date et la liste de déclarant'
Private Sub UserForm_Initialize()
Opérateur.RowSource = "'paramètres'!" & Sheets("paramètres").Range("A1").CurrentRegion.Address
date_saisie.Caption = Format(Now, "dd/mm/yy hh:mm")
End Sub

Sub deféquipe()

Dim équipe As String

If Format(Time, "hh:mm") > "5:00" And Format(Time, "hh:mm") < "13:00" Then
équipe.Value = "matin"
ElseIf Format(Time, "hh:mm") >= "13:00" And Format(Time, "hh:mm") < "21:00" Then
équipe.Value = "après - midi"
ElseIf Format(Time, "hh:mm") >= "21:00" And Format(Time, "hh:mm") < "5:00" Then
équipe.Value = "Nuit"
End If

End Sub

Sub defweek()
Dim week As Integer

week.Value = [=SI(cells(ligne, 2)=" "; " "; isoweeknum(cells(ligne, 2)]

End Sub

"

Ce qui ne marche pas plus précisément est la saisie du numéro de week donc en cells(ligne, 1) et la définition de l'équipe donc en cells(ligne, 5)
"isoweeknum" était une autre macro qui elle marche pour définir le numéro de semaine.


Si quelqu'un pouvait m'éclairer ce serait vraiment génial

Merci a+
A voir également:

5 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
6 févr. 2013 à 20:06
Le code a mettre dans le boton
Private Sub CmdOK_Click()
Dim ligne   As Integer

        If Opérateur.Text = "Nom du Déclarant" Then
            MsgBox "Veuillez vous identifier", vbOKOnly, "Opérateur manquant"
            Opérateur.SetFocus
            Exit Sub
        ElseIf qte.Text = "" Then
            MsgBox "Veuillez saisir la quantité d'armature produite", vbOKOnly, "quantité manquante"
            qte.SetFocus
            Exit Sub
        End If
'Place les valeurs sur le tableau excel'
    With Sheets("données production")
        ligne = .Cells(Rows.Count, 4).End(xlUp).Row + 1
        .Unprotect
        .Cells(ligne, 1).Value = NoSemaineISO(Date)
        .Cells(ligne, 2).Value = Format(Date, "dd/mm/yy")
        .Cells(ligne, 3).Value = Format(Time, "hh:mm")
        .Cells(ligne, 4).Value = Opérateur.Text
        .Cells(ligne, 5).Value = Deféquipe(Time)
        .Cells(ligne, 6).Value = qte.Text
      '  .Cells(ligne, 7).Value = saisiqte.qte  'à modifier pour que ca indique la quantité par heure
        .Protect
    End With
    
    Unload Me
    
End Sub

Pour spécifier la quantité/heure y faut une référence de début et de fin ?
A+
1
volcolm Messages postés 13 Date d'inscription vendredi 25 janvier 2013 Statut Membre Dernière intervention 6 février 2013
6 févr. 2013 à 20:28
ça marche merci !
Pour la quantité par heure c'est pas réellement par heure en faite, les opératrices devront saisir les données toutes les heures approximativement, donc ce serait plutôt la quantité produite depuis la dernière saisie, donc la "valeur saisie à l'instant" - "valeur saisie précédemment".

J'aurais aussi une autre question si ce n'est pas trop demandé, comment faire pour faire en sorte que mes données actuelles soit dans un tableau mais que le tableau ne descende pas sur des milliers de ligne mais juste sur le nombre de lignes remplies, et que si une nouvelle saisie est faite le tableau est agrandi d'une ligne.
Cela m'éviterais d'avoir un fichier beaucoup trop lourd et lent =s

Merci
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
6 févr. 2013 à 22:45
Je vois ça...
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
5 févr. 2013 à 23:20
Bonjour,
Une tite modif..
'Place les valeurs sur le tableau excel'
    équipe.Value = Deféquipe()
    week.Value = NoSemaineISO(Date)
    With Sheets("données production")
        ligne = .Cells(Rows.Count, 4).End(xlUp).Row + 1
        .Unprotect
        .Cells(ligne, 1).Value = week.Value
        .Cells(ligne, 2).Value = Format(Date, "dd/mm/yy")
        .Cells(ligne, 3).Value = Format(Time, "hh:mm")
        .Cells(ligne, 4).Value = saisiqte.Opérateur
        .Cells(ligne, 5).Value = équipe.Value
        .Cells(ligne, 6).Value = saisiqte.qte
        .Protect
    End With
    Unload Me
End Sub

Function NoSemaineISO(d As Date) As Integer
    NoSemaineISO = Format(d, "ww", vbMonday, vbFirstFourDays)
End Function

Function Deféquipe() As String
    If Format(Time, "hh:mm") > "5:00" And Format(Time, "hh:mm") < "13:00" Then
        Deféquipe = "matin"
    ElseIf Format(Time, "hh:mm") >= "13:00" And Format(Time, "hh:mm") < "21:00" Then
        Deféquipe = "après - midi"
    ElseIf Format(Time, "hh:mm") >= "21:00" And Format(Time, "hh:mm") < "5:00" Then
        Deféquipe = "Nuit"
    End If
End Function

Tu devrais encore avoir des erreurs sur Lignes 4 et 6 mais n'ai pas de référence pour corriger..
A+
0
volcolm Messages postés 13 Date d'inscription vendredi 25 janvier 2013 Statut Membre Dernière intervention 6 février 2013
5 févr. 2013 à 23:35
Merci pour les modifications, pour ce qui est du numéro de semaine j'avais trouvé une autre solution mais du bricolage donc je vais garder la votre. Par contre oui il y a bien une erreur à la ligne
équipe.Value = Deféquipe()

Mais je n'ai pas réellement de référence, en faite selon l'heure indiqué en (ligne, 3) la macro doit saisir en (ligne, 5) "Matin, Nuit ou AM" , c'est là que je bloques vu qu'il n'y a pas vraiment de référent et je ne voie pas comment les ajouter
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
6 févr. 2013 à 06:35
équipe.Value ... C'est quoi ?
0
volcolm Messages postés 13 Date d'inscription vendredi 25 janvier 2013 Statut Membre Dernière intervention 6 février 2013
6 févr. 2013 à 16:29
Alors dans ce que j'ai essayé d'écrire c'est censé être ma variable qui peut être MATIN, NUIT, ou AM selon la fonction deféquipe qui prend l'heure à la saisie et permet de définir si la valeur de équipe est matin AM ou nuit.

Maintenant je me doutes que cette variable est mal utilisé mais je n'arrives pas à trouver une syntaxe correct
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
6 févr. 2013 à 16:43
On risque de tourner en rond encore longtemps, tu pourrais déposer ton classeur sur Cjoint.com (sans donnée confidentielle) et mettre le lien sur un poste suivant.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
volcolm Messages postés 13 Date d'inscription vendredi 25 janvier 2013 Statut Membre Dernière intervention 6 février 2013
Modifié par volcolm le 6/02/2013 à 17:04
Voilà le lien Cjoint. :
https://www.cjoint.com/?CBgrbFQNeMi

(ça m'a pris un peu de temps car le fichier était trop gros, j'ai créer des tableaux mais il me les a fait pour toutes les lignes de la feuille donc ça en prenait de la place ! )

Merci encore pour votre aide et désolé du mal à m'exprimer quand il s'agit de programmation !
0