Mettre un caractère automatiquement

Bonjour à tous,

Après plusieurs recherches vaines, je me permet de poster pour mon problème.

En effet, je n'arrive pas à modifier mon code VBA dans le but que: SI je n'ai pas la durée ET pas la date de début (ou de fin) ET pas la fréquence MAIS que la machine et la cause sont renseignées (c'est le minimum), le caractère "1" s'ajoute automatiquement à la case de la fréquence à la ligne correspond à la bonne cause/machine.

Voici mes lignes de codes:

Private Sub Cause()
    Dim Rg As Range

    Set Rg = Me.Shapes(Application.Caller).TopLeftCell.Offset(, -2)
        t$ = Rg.Value:  If t = "" Then t = Rg.End(xlUp).Value

    With Feuil1
        With .Cells(.Rows.Count, 5).End(xlUp).Offset(1)
                        .Value = t
            .Offset(, 1).Value = Rg.Offset(, 1).Value

        End With

        .Activate
    End With

    Set Rg = Nothing
End Sub

Je pense que le problème vient de là:

    With Feuil1
        With .Cells(.Rows.Count, 5).End(xlUp).Offset(1)
                        .Value = t
            .Offset(, 1).Value = Rg.Offset(, 1).Value

dans laquelle il faudrait rajouter une ou deux lignes pour que si les colonnes A,B,C et D ne sont pas complétés, le caractère "1" se mette automatiquement (pour le bon déroulement des calculs).

Merci d'avance de votre attention,

Cordialement,

Blend

Salut,

Malgré ta feuille aide, j’ai un peu de peine à comprendre comment fonctionne ton fichier. Peux-tu alors m’indiquer les opérations que tu effectues avant d’arriver à ton problème (mais sans m’expliquer tout le fonctionnement du fichier non plus), le résultat que tu obtiens actuellement et le résultat que tu désirerais.

Merci de bien préciser de quelles feuilles, de quels boutons, de quelles cellules tu parles.

Dans l’espoir de pouvoir t’aider à répondre à ta troisième demande et que tu ne retrouves pas la réponse tout seul

Cordialement

Bonjour Yvouille,

Ce fichier est complété par des pilotes sur des lignes. Quand il y a un problème, un arrêt ou autre, ils complètent ce fichier sur la feuille 'saisie-pilote' en mettant l'heure de début et de fin ou alors la fréquence de l’événement. Puis ils cliquent sur "choisir Machine/Cause" et là, la liste de causes s'affiche et ils choisissent.

Pour un pilote, tout s'arrête là mais moi ensuite je reprend ces causes pour les comptabiliser afin de savoir à quel endroit il faut faire une maintenance ou autre.

Peux-tu alors m’indiquer les opérations que tu effectues avant d’arriver à ton problème (mais sans m’expliquer tout le fonctionnement du fichier non plus), le résultat que tu obtiens actuellement et le résultat que tu désirerais.

Je me devais d'expliquer le fonctionnement pour être le plus précis possible dsl..! Le résultat j'arrive à l'obtenir, pas de problème. Le problème exactement est que certaines fois, les pilotes ne prennent pas le temps de compléter ni l'heure ni la fréquence (ils mettent juste la machine/cause). Ainsi, les calculs ne s'effectuent pas...

Je voudrais donc que lorsqu'il n'y a pas d'heure, de durée, de fréquence mais qu'on clique sur une cause, le chiffre "1" sur mette sur la colonne "Fréquence" en 'saisie-pilote' et à la ligne de la cause correspondante. Dans le but d'avoir le calcul réalisé en 'CalculsMacros' (+1 sur la fréquence et +5min sur la durée)

J'espère avoir été le plus clair possible. Et ne t'en fais pas Yvouille, si je trouve tout seul, je vous ferais partager tout ça ! C'est à ça que sert un forum après tout

Blend

Salut,

Blend a écrit :

Je pense que le problème vient de là:

With Feuil1
        With .Cells(.Rows.Count, 5).End(xlUp).Offset(1)
                        .Value = t
            .Offset(, 1).Value = Rg.Offset(, 1).Value

On ne peut pas vraiment dire que le problem vient de là, mais si je t’ai bien compris, c’est effectivement là qu’il faut intervenir

Voici ce bout de code complété (les 3 dernières lignes en plus) :

 With Feuil1
        With .Cells(.Rows.Count, 5).End(xlUp).Offset(1)
                        .Value = t
            .Offset(, 1).Value = Rg.Offset(, 1).Value
             If .Offset(, -4) = "" And .Offset(, -3) = "" And .Offset(, -1) = "" Then
                .Offset(, -1).Value = 1
            End If

Cordialement.

NB : Pourquoi ne pas forcer l'utilisateur à saisir des heures de début et de fin ou une fréquence ? Par exemple par un message qui indiquerait "La saisie de xxxxx est obligatoire" et qui apparaîtrait tant que ce ne serait pas fait ?

Bonjour Yvouille, bonjour à tous,

Comme promis, je te remercie de ta réponse !

Cela me convient parfaitement seulement il y a un petit "hic", le temps ne s'incrémente pas de 5min à chaque évènement.

De plus, ayant plus de recul sur ce fichier, je me rend malheureusement compte qu'il n'est pas bien complété. Ainsi j'ai pu voir des pilotes mettre des durées du genre "environ 5h" ou alors "de 7h à 8h" sauf qu'Excel ne prend pas du tout en compte ce genre de format ^^. Je souhaite donc prendre en compte QUE la fréquence en mettant systématiquement 5min à chaque évènement (pour les calculs 'CalculsMacros').

Je me permet aussi une dernière petite remarque: est-il possible de recalculer toutes les fréquences à chaque valeur entrée dans une colonne précise (celle des fréquences) ? Je suppose que oui évidemment vu la puissance d'Excel mais dans ce cas comment faire ?

Pour être le plus précis possible, des pilotes modifient une fréquence sur un évènement déjà passé quelques lignes plus haut. De ce fait, ma macro ne prend pas en compte ce changement et cela fausse les calculs!

Bien cordialement,

Blend

Salut,

Blend a écrit :

En effet, je n'arrive pas à modifier mon code VBA dans le but que: SI je n'ai pas la durée ET pas la date de début (ou de fin) ET pas la fréquence MAIS que la machine et la cause sont renseignées (c'est le minimum), le caractère "1" s'ajoute automatiquement à la case de la fréquence à la ligne correspond à la bonne cause/machine.

Apparemment j’ai répondu à la demande ci-dessus pour laquelle j’étais intervenu sur ton fil. Après un mois tu m’as remercié.

Pour tes autres questions, peux-tu ouvrir un nouveau fil, s’il-te-plait ?

Bonne continuation.

Rechercher des sujets similaires à "mettre caractere automatiquement"