IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Demande d'aide de modification d'un fichier excel + VBA gérant une balance


Sujet :

Macros et VBA Excel

  1. #21
    Membre à l'essai
    Homme Profil pro
    autre
    Inscrit en
    Décembre 2015
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Décembre 2015
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    j'ai du mal avec le fonctionnement de la macro Autoremplissage

    hélas je ne comprends pas cette ligne majeure, avec ce multiple de 3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If feuille.Cells(j, colonne - (i * 3)) = "" Then
    j'ai donc désactivé cette fonction Autoremplissage en attendant


    je me dit qu'il faudrait remplir les cellules du template "de base" de l'info "pesée non faite" comme cela, la première pesée écraserait la cellule remplie, (mais cela reste de la bidouille non optimale.)

    Le but c'est éviter qu'en début de vacation, les personnes passant après la 1ière personne pour peser se retrouvent avec "pesée non faite" dans la première colonne, et donc que leur pesée aille dans la cellule normalement prévue pour la fin de vacation "

    Ne comprenant pas bien le code, je n'arrive pas à modifier le code pour le remplissage suite à la modification du template qui a donc des colonnes supplémentaires à présent


    et concernant la mise en forme conditionnelle, j'ai trouvé !! La condition pour "NOK" doit être ajouter en premier pour s'assurer que les cellules contenant "NOK" sont colorées en rouge avant que la condition pour "OK" puisse les affecter.

  2. #22
    Membre à l'essai
    Homme Profil pro
    autre
    Inscrit en
    Décembre 2015
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Décembre 2015
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Bonjour à vous, merci encore pour votre aide

    =>J'abandonne pour l'instant l'idée avec la macro Autoremplissage, d'inscrire "pesée non faite" car je n'arrive pas à adapter le code et pas la 1ière priorité
    =>j'ai réussi à solutionner mon souci de mise en forme conditionnelle


    j'ai besoin de votre aide car la logique de remplissage de l'onglet IMS ne fonctionne pas correctement, peut-être dois-je ouvrir un nouveau post?

    Si pesée OK, cela fonctionne Nom : ok.JPG
Affichages : 42
Taille : 5,2 Ko

    Si mise à jour du poids, l'utilisateur clique sur "oui" pour modifier son poids de référence, cela fonctionne Nom : maj.JPG
Affichages : 51
Taille : 5,4 Ko


    mais si l'utilisateur ne mets pas à jour son poids suite à détection d'une erreur, en cliquant sur NON,

    Nom : fenetre.JPG
Affichages : 35
Taille : 52,2 Ko

    cela affiche toujours Nom : maj.JPG
Affichages : 51
Taille : 5,4 Ko

    au lieu d'afficher NOK Nom : nok.JPG
Affichages : 32
Taille : 4,0 Ko


    ancien code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Sub rempl_IMS(arg) 'Remplissage automatique de l'onglet IMS de la semaine en cours + mise en forme conditionnelle des cellules
     
    Application.ScreenUpdating = False
     
    Set rech_nom = Nothing
    Set rech_nom = Sheets("IMS_CW" & num_sem & "_" & annee).Range("A:A").Find(what:=nom_toolmoov & " " & pre_toolmoov, lookat:=xlWhole, MatchCase:=False)
    Set rech_date = Nothing
    Set rech_date = Sheets("IMS_CW" & num_sem & "_" & annee).Range("13:13").Find(what:=aujourdhui, lookat:=xlWhole, MatchCase:=False)
     
    If arg <> "" Then
        Sheets("IMS_CW" & num_sem & "_" & annee).Unprotect ("admin")
        If Worksheets("IMS_CW" & num_sem & "_" & annee).Cells(rech_nom.Row, rech_date.Column) <> "MAJ" Then
            Worksheets("IMS_CW" & num_sem & "_" & annee).Cells(rech_nom.Row, rech_date.Column) = arg
            Worksheets("IMS_CW" & num_sem & "_" & annee).Cells(rech_nom.Row, rech_date.Column + 1) = ecart & " en Kg "
        End If
     
        If arg = "MAJ" Then Worksheets("IMS_CW" & num_sem & "_" & annee).Cells(rech_nom.Row, rech_date.Column + 1) = ecart & " en Kg " & vbLf & commentaire
    End If
    Autoremplissage rech_date.Column, Worksheets("IMS_CW" & num_sem & "_" & annee)
     
    Sheets("IMS_CW" & num_sem & "_" & annee).Protect Password:="admin", DrawingObjects:=True, Contents:=True, Scenarios:=True
    ThisWorkbook.Save
     
    Application.ScreenUpdating = True
     
    End Sub

    nouveau code actuel, suite à la modification du template pour avoir une remontée des 2 pesée, début et fin de vac
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Sub rempl_IMS(arg) 'Remplissage automatique de l'onglet IMS de la semaine en cours + mise en forme conditionnelle des cellules
        Dim kR As Long, kC As Integer
        Application.ScreenUpdating = False
        With Worksheets("IMS_CW" & num_sem & "_" & annee)
           If arg <> "" Then
                Set rech_nom = Nothing
                Set rech_nom = .Range("A:A").Find(what:=nom_toolmoov & " " & pre_toolmoov, lookat:=xlWhole, MatchCase:=False)
                kR = rech_nom.Row
                Set rech_date = Nothing
                Set rech_date = .Range("13:13").Find(what:=aujourdhui, lookat:=xlWhole, MatchCase:=False)
                kC = rech_date.Column
                .Unprotect "admin"
                If .Cells(kR, kC) <> "" Then
                    If .Cells(kR, kC + 3) <> "" Then           'les deux champs remplis on recommence
                       .Cells(kR, kC).Resize(1, 5) = ""  'on efface les 5 colonnes successives
                    Else
                       kC = kC + 3
                    End If
                End If
     
                If .Cells(kR, kC) <> "MAJ" Then
                   '.Cells(kR, kC) = arg
                   '.Cells(kR, kC) = arg & vbLf & Format(Time, "hh:mm")
                   .Cells(kR, kC) = arg & vbLf & Format(Now, "dd/mm/yy hh\hnn")
                End If
                If arg = "MAJ" Then
                    .Cells(kR, kC + 1) = ecart & " Kg " & vbLf & commentaire
                Else
                    .Cells(kR, kC + 1) = ecart & " Kg"
                End If
            End If
            Autoremplissage kC, Worksheets("IMS_CW" & num_sem & "_" & annee)
            .Protect Password:="admin", DrawingObjects:=True, Contents:=True, Scenarios:=True
        End With
     
        ThisWorkbook.Save
        Application.ScreenUpdating = True
    End Sub

  3. #23
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Mai 2024
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Mai 2024
    Messages : 115
    Points : 210
    Points
    210
    Par défaut
    j'ai besoin de votre aide car la logique de remplissage de l'onglet IMS ne fonctionne pas correctement, peut-être dois-je ouvrir un nouveau post?
    Est-ce que le code fonctionnait dans l'ancienne version car cette condition interdit toute modification une fois la cellule passe à "MAJ"
    Ancien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Worksheets("IMS_CW" & num_sem & "_" & annee).Cells(rech_nom.Row, rech_date.Column) <> "MAJ" Then
    ou nouveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If .Cells(kR, kC) <> "MAJ" Then
    Malgré que ce dernier est incorrect toujours Vrai parce que la cellule contient MAJ + Date ce dernier doit etre réécrit comme suit : ce code a été déjà posté il fallut être un peu attentif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If InStr(.Cells(kR, kC), "MAJ") = 0 Then
    Mais je pense que l'erreur n'est pas là, NOK n'est présent qu'une seule fois dans le code lorsque le badge est vide j'imagine que cette variable continent une ancienne saisie qui n'a pas été réinitialisée

    Dans le fonction comparaison vider cette variable ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sub comparaison()
    badge = ""

  4. #24
    Membre à l'essai
    Homme Profil pro
    autre
    Inscrit en
    Décembre 2015
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Décembre 2015
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Volid Voir le message
    Est-ce que le code fonctionnait dans l'ancien version car cette condition interdit toute modification une fois la cellule passe à "MAJ"
    Cela devait probablement dysfonctionner dans l'ancien fichier, je peux aller le vérifier, l'onglet IMS nous servait pas avant



    Citation Envoyé par Volid Voir le message
    Malgré que ce dernier est incorrect toujours Vrai parce que la cellule contient MAJ + Date ce dernier doit être réécrit comme suit : ce code a été déjà posté il fallut être un peu attentif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If InStr(.Cells(kR, kC), "MAJ") = 0 Then
    Je n'ai pas cette ligne car elle était dans le code que tu avais écris pour la prise en compte des vacations, je l'ai actuellement pas utilisé car on fait trop d'horaires différents.
    Mais il servira probablement plus tard

    je me suis peut-être emmêlé les pinceaux, car je ne comprends pas l'intégralité des subtilités du code.. et oui je reste un bidouilleur et non un développeur au sens noble du terme. Et je manque cruellement de temps pour me perfectionner

    Citation Envoyé par Volid Voir le message
    Mais je pense que l'erreur n'est pas là, NOK n'est présent qu'une seule fois dans le code lorsque le badge est vide j'imagine que cette variable continent une ancienne saisie qui n'a pas été réinitialisée

    Dans le fonction comparaison vider cette variable ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sub comparaison()
    badge = ""
    oui j'avais repéré cela, effectivement le code semble pas appelé NOK, le badge c'est que l'opérateur doit zipper son code barre pour modifier son poids de référence

    pour le coup il serait plus simple que si l'opérateur clique sur NON et ne termine pas son process de pesée, qu'on a aucune info qui s'inscrit dans l'onglet IMS, comme cela on a que les pesées OK et les vrai MAJ quand ils cliquent sur oui

    Nom : fenetre.JPG
Affichages : 32
Taille : 52,2 Ko

  5. #25
    Membre à l'essai
    Homme Profil pro
    autre
    Inscrit en
    Décembre 2015
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Décembre 2015
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par nirvana4483 Voir le message

    pour le coup il serait plus simple que si l'opérateur clique sur NON et ne termine pas son process de pesée, qu'on a aucune info qui s'inscrit dans l'onglet IMS, comme cela on a que les pesées OK et les vrai MAJ quand ils cliquent sur oui

    très clairement, je ne sais pas le faire sans mettre des heures voir des jours, voir des années
    pesée ok => Nom : ok.JPG
Affichages : 34
Taille : 5,2 Ko cela fonctionne
    mise à jour du poids => Nom : maj.JPG
Affichages : 32
Taille : 5,4 Ko cela fonctionne
    pesée abandonné en cliquant sur non, par exemple pour aller vérifier sa caisse=> on ne remplit rien, on laisse la cellule vide... cela fonctionne pas

  6. #26
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Mai 2024
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Mai 2024
    Messages : 115
    Points : 210
    Points
    210
    Par défaut
    Voila la partie du code dans la fonction comparaison qui affiche le dialogue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        If Abs(ecart) > 0.0015 Then 'modif magré 02/04/24 de 0.0008 à 0.0015
            If MsgBox("Poids de la caisse n° " & numero_caisse & " différent du poids de référence de : " & (ecart * 1000) & "grammes" & vbCr & vbCr & "Voulez-vous modifier ce poids de référence?" & vbCr & vbCr & "Attention vous certifiez que votre caisse est conforme à la politique FOD SAFRAN", vbYesNo + vbDefaultButton2) = vbYes Then
                'modification du Referentiel_poids_caisse
                valider_pesée
                ecrit_log
            Else  
                'vérification avant nouvelle pesée
                MsgBox "Vérifiez votre caisse!!!"
                ecrit_log
            End If
    dans la première section de bloc If la partie exécutée si OUI est saisie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                'modification du Referentiel_poids_caisse
                valider_pesée
                ecrit_log
    La seconde partie est celle du NON .. donc il suffit juste de la supprimer ou désactiver pour annuler toute écriture dans l'onglet IMS si le bouton non est cliqué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                'vérification avant nouvelle pesée
                MsgBox "Vérifiez votre caisse!!!"
                ecrit_log

  7. #27
    Membre à l'essai
    Homme Profil pro
    autre
    Inscrit en
    Décembre 2015
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Décembre 2015
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Merci, J'irais testé demain matin 👍

  8. #28
    Membre à l'essai
    Homme Profil pro
    autre
    Inscrit en
    Décembre 2015
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Décembre 2015
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Merci pour le support
    C'est mis en place!
    J'ai modifié comme ci dessous pour ne plus afficher le NOK, j'ai ainsi la traçabilité du NOK dans les LOG
    j'attends de voir si tout fonctionne correctement

    dans Sub comparaison()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'vérification avant nouvelle pesée
                MsgBox "Vérifiez votre caisse!!!"
                ecrit_log3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Sub ecrit_log3()
     
        unprot
     
     log = "LOG"
        der_lig Sheets(log), "A1"
        With Sheets(log)
        .Range("A" & dern_ligne + 1) = Date
        .Range("B" & dern_ligne + 1) = Time
        .Range("C" & dern_ligne + 1) = numero_caisse
        .Range("D" & dern_ligne + 1) = nom_toolmoov & " " & pre_toolmoov
        .Range("E" & dern_ligne + 1) = ecart
        .Range("F" & dern_ligne + 1) = poidref
        .Range("G" & dern_ligne + 1) = valeurmef
        .Range("H" & dern_ligne + 1) = badge
        .Range("I" & dern_ligne + 1) = nom
        '.Range("J" & dern_ligne + 1) = nomsup
        .Range("K" & dern_ligne + 1) = commentaire
        End With
     
    'If badge = "" Then
    'rempl_IMS "NOK"
    'noircir 'remplissage automatique absence S/D pour les pers de jour et M/M/J pour les pers de VSD pas le lundi si rattapage
     
    'Else
    'rempl_IMS "MAJ"
    'noircir 'remplissage automatique absence S/D pour les pers de jour et M/M/J pour les pers de VSD pas le lundi si rattapage
    'End If
     
        prot
     
    End Sub

  9. #29
    Membre à l'essai
    Homme Profil pro
    autre
    Inscrit en
    Décembre 2015
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Décembre 2015
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Bonjour à vous,
    j'ai encore besoin de votre aide, pour une amélioration.

    j'ai rajouté un filtre dans le template IMS sur le nom et j'aimerais aussi pouvoir filtrer par vacation (horaire 3*8): team 1, team 2, team 3

    j'ai donc besoin de rajouter l'information team1, team2, team3 quelques part, c'est pour pouvoir vérifier rapidement qui n'a pas effectué sa pesée


    j'ai rajouté l'information de la team dans l'onglet BDD_Safran colonne D> "T1", "T2", "T3"
    Nom : bdd.JPG
Affichages : 5
Taille : 23,6 Ko

    j'ai en conséquence modifié le code ainsi dans la macro Sub creat_IMS() en rouge

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        With Sheets(IMS)
        .Range("A" & dern_ligne_IMS) = Sheets(bdd_saf).Range("D" & i) & "-" & Sheets(bdd_saf).Range("A" & i) & " " & Sheets(bdd_saf).Range("B" & i)
        .Cells(dern_ligne_IMS, 1).Select
        End With
        
        For j = 1 To 7
        col = (j * 3) + 1
        
        With Sheets(IMS)
        .Range("A" & dern_ligne_IMS) = Sheets(bdd_saf).Range("D" & i) & "-" & Sheets(bdd_saf).Range("A" & i) & " " & Sheets(bdd_saf).Range("B" & i)
        .Cells(dern_ligne_IMS, col).Select
        End With
    cela donne donc ceci
    Nom : T1.JPG
Affichages : 5
Taille : 12,4 Ko

    c'était parfait pour filtrer, soit par nom ou team T1, T2 ou T3

    sauf que le code n'aime pas cela et bloque à kR = rech_nom.Row dans la macro Sub rempl_IMS (arg)

    Nom : kr.JPG
Affichages : 5
Taille : 69,7 Ko


    Comment remédier à cela, Je n'ai pas voulu ajouté une nouvelle colonne team à coté de la colonne Name dans l'onglet IMS, car cela risquerait de décaler tous le code

    Nom : T1-.JPG
Affichages : 5
Taille : 18,7 Ko


    Et en regardant rech_nom.Row, je me dit que mon essai de modif risque d'impacter ailleurs et faire buguer d'autre macro
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/06/2020, 11h16
  2. Réponses: 3
    Dernier message: 17/01/2019, 15h35
  3. demande d'aide pour modification d'une macro
    Par personalités dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/07/2015, 20h07
  4. Réponses: 2
    Dernier message: 29/09/2011, 14h26
  5. Pb avec POI et la modification d'un fichier Excel
    Par alfouik dans le forum Documents
    Réponses: 7
    Dernier message: 04/06/2008, 11h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo