Problème à faire marcher ma macro
Résolu
volcolm
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention -
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention -
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+
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:
- Problème à faire marcher ma macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Comment faire marcher chromecast - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro maker - Télécharger - Divers Utilitaires
5 réponses
Le code a mettre dans le boton
Pour spécifier la quantité/heure y faut une référence de début et de fin ?
A+
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+
Bonjour,
Une tite modif..
Tu devrais encore avoir des erreurs sur Lignes 4 et 6 mais n'ai pas de référence pour corriger..
A+
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+
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
é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
équipe.Value ... C'est quoi ?
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
Maintenant je me doutes que cette variable est mal utilisé mais je n'arrives pas à trouver une syntaxe correct
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 !
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 !
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