Formule avec condition

Ok merci je teste ça.

Petite question : j'aimerais créer un QR code pour que le personnel puisse avoir accès à ce fichier. Donc je me demande est-ce qu'il faut que je mette sur un drive le fichier? Où est-ce que il faut que je remplace la feuille formulaire par un Microsoft form qui serait en ligne? Qu'est-ce que vous en pensez?

non cela ne marche pas.

je ne peux pas supprimer un ligne maintenant. j'ai la demande de mot de passe qui revient

Bonsoir,

Espérons que celui-ci fonctionne mieux:

8cahier-fmpa3.xlsm (82.54 Ko)

Pour la question précédente, je n'ai pas d'idée bien précise, mais il me semble que le fichier sur le drive est une solution qui doit marcher, le mieux c'est quand même de faire des essais.

Cdlt

Merci, cela semble nikel.

petit soucis :

impossible de modifier quelque chose dans la feuille "liste déroulante". je dois modifier la liste du personnel. je dois le faire également dans la feuille tableau

Bonjour,

Essayez ceci:

10cahier-fmpa3-2.xlsm (84.70 Ko)

Cdlt

oui j'y arrive maintenant.

- lorsque je met le mot de passe cela déverrouille la feuille juste pour une action, après je dois re taper le mot de passe.

- lorsque j'ouvre le fichier il me demande d'entré un mdp.

- dans la feuille liste déroulante, je rajoute un nom. dans "tableau" je rajoute le même nom. Quand je vais dans la feuille formulaire pour ajouter un manoeuvre il me met un message d'erreur (voir photo).

sans titre

La gestion des mots de passe est assez pénible parce qu'une fois, il faut le mettre et, une autre fois, il faut l'enlever, ça devient vite compliquer à gérer. Si vous êtes obligé de mettre des mots de passe, c'est sûr qu'il y aura des contraintes pour le bon déroulement de l'application, c'est le principe même de la protection.

- lorsque je met le mot de passe cela déverrouille la feuille juste pour une action, après je dois re taper le mot de passe., pour la feuille "Liste déroulante", le mot de passe est demandé uniquement lorsque on ouvre cette feuille, une fois qu'elle est ouverte avec le mot de passe, ce dernier n'est plus demandé, sauf si vous passez sur une autre feuille et puis que vous revenez sur celle-là.

-lorsque j'ouvre le fichier il me demande d'entré un mdp. Ben, c'est le but de départ, quiconque ouvre le fichier ne pourra accéder au modifications que si le mot de passe a été saisi.

- dans la feuille liste déroulante, je rajoute un nom. dans "tableau" je rajoute le même nom. Quand je vais dans la feuille formulaire pour ajouter un manoeuvre il me met un message d'erreur (voir photo). Pourquoi mettez-vous le même nom?

ok pour le mot de passe

je rajoute même nom pour qu'il y est une concordance entre les deux feuilles.

dans liste déroulante je rajoute "martin", dans tableau je rajoute "Martin" puis j'ai l'erreur qui s'affiche quand j'ajoute une manœuvre avec martin

J'ai modifié le fichier de telle manière que celui qui l'ouvre avec le code "ADM" pourra tout faire, alors que celui qui l'ouvre sans ce code (ou code erroné) ne pourra remplir que le formulaire et le valider.

10cahier-fmpa4.xlsm (84.04 Ko)

parfait c'est exactement ce que je voulais.

par contre je ne peux plus supprimer une ligne de manœuvre avec le bouton

Si ça marche, mais il y a eu un copié/collé malheureux qui fait qu'il ne trouve pas la feuille à sélectionner. Voici le correctif:

12cahier-fmpa4.xlsm (85.29 Ko)

je n'y arrive toujours pas

Vous n'êtes sûrement pas connecté avec le code "ADM" demandé à l'ouverture du fichier. Pour le vérifier, sur la feuille "Formulaire", sélectionnez la cellule A1 et regardez dans la barre de formule, il faut qu'il y ait le signe "$" , c'est lui qui donne l'autorisation ou pas de modifier les feuilles.

sinon, ça marche bien, la preuve en vidéo:

alfamaxou

bonjour,

j'ai mit en place le fichier excel . cela fonctionne très bien.

mais en le mettant en place je m'aperçois qu'ils font des erreurs.

est il possible de rajouter un code (écriture), dans la feuille formulaire pour pas qu'il y est deux noms similaire. exemple : en fait en "nom du responsable" il marque "martin N" puis en participant il marque aussi "martin N". faire apparaitre un message d'erreur comme quoi il y a deux fois le même nom.

est ce que vous voulez le fichier? ou je mettrais l'écriture?

Bonsoir,

Veuillez effacer tout le code du module 1 et le remplacer par celui-ci:

Option Explicit
Option Compare Text

'Déclaration des variables
Public f1 As Worksheet, f2 As Worksheet, f3 As Worksheet
Public Lig_f2 As Long, Col_f2 As Long, Lig As Long
Public DerLig_f2 As Long, DerLig_f3 As Long, i As Long, Position As Long, j As Long, Nb_Doublon As Long
Public Duree As Date
Public Theme As String, AutreTheme As String, Init_Theme As String, Init_AutreTheme As String, Nom As Variant
Public DeuxPoints_Theme As Long
Public Non_Conforme As Boolean

Sub Ajouter_manoeuvre()
    Application.ScreenUpdating = False 'Empêche les rafraichissements de l'écran lors de l'exécution du code, et augmente la vitesse d'éxcution
    Set f1 = Sheets("Formulaire") 'attribution de la variable f1 )à la feuille "Formulaire"
    Set f2 = Sheets("liste manoeuvres") 'attribution de la variable f2 à la feuille "liste manoeuvres"
    Set f3 = Sheets("Tableau")
    f3.Unprotect Password:="ADM"
    f2.Unprotect Password:="ADM"
    If f2.Range("B2").Value = "" Then 'si cellule B2 de f2 est vide, alors:
        Lig_f2 = 2 'Première ligne vide de f2
    Else 'sinon
        f2.Cells(2, 1).ListObject.ListRows.Add AlwaysInsert:=False 'Ajout d'une ligne dans le Tableau 1 de f2
        Lig_f2 = f2.ListObjects("Tableau1").DataBodyRange.Rows.Count + 1 'recherche la première ligne vide de f2
    End If

Controle_conformité:
    If f1.Range("D16").Value = "" And f1.Range("D19").Value = "" Or f1.Range("D16").Value <> "" And f1.Range("D19").Value <> "" Then
        MsgBox "Une seule plage ""Thème"" ou ""Autre thème"" doit être remplie " 'contrôle la présence de thème ou d'autre thème
        GoTo Protection 'si absence des 2 ou présence des 2, alors on sort du programme
    ElseIf f1.Cells(9, "D") = "" And f1.Cells(11, "D") Then 'contrôle de la présence des horaires de début et de fin
        MsgBox "Les horaires de début et de fin ne sont pas remplis sont vides"
        GoTo Protection 'si absence des 2, alors on sort du programme
    ElseIf f1.Cells(5, "F") = "" Then ' contrôle la présence du premier participant
        MsgBox "il n'y a pas de participants"
        GoTo Protection 'si absence du premier participant, alors on sort du programme
    End If

Contrôle_présence_de_doublons:
    For i = 5 To 15 Step 2
        For j = 6 To 10 Step 2
            If f1.Cells(i, j) <> "" Then
                Nom = Cells(i, j)
                Nb_Doublon = Application.WorksheetFunction.CountIf(f1.Range("F5:J15"), Nom)
                If Nb_Doublon > 1 Then
                    MsgBox "Le Nom " & Nom & " est déjà présent, veuillez sélectionner un autre nom"
                    Exit Sub
                End If
            End If
        Next j
    Next i

    'remplissage de la f2
    'f2.Cells(Lig_f2, "A") = f1.Range("D5").Value 'copie de "Valider Webact ""
    f2.Cells(Lig_f2, "B") = f1.Range("D5").Value 'copie de "Horodatage"
    f2.Cells(Lig_f2, "C") = f1.Range("D7").Value 'copie de "Date"
    f2.Cells(Lig_f2, "D") = f1.Range("D9").Value 'copie de "Heure début"
    f2.Cells(Lig_f2, "E") = f1.Range("D11").Value 'copie de "Heure fin"
    f2.Cells(Lig_f2, "F") = f1.Range("D13").Value 'copie de "Durée"
    f2.Cells(Lig_f2, "G") = f1.Range("D16").Value 'copie de "Thème"
    f2.Cells(Lig_f2, "H") = f1.Range("D19").Value 'copie de "Autre Thème"
    f2.Cells(Lig_f2, "I") = f1.Range("D20").Value 'copie de "Observation"

    f2.Cells(Lig_f2, "J") = f1.Range("F5").Value 'copie de "Responsable"
    f2.Cells(Lig_f2, "K") = f1.Range("F7").Value 'copie de "Participant 1"
    f2.Cells(Lig_f2, "L") = f1.Range("F9").Value 'copie de "Participant 2"
    f2.Cells(Lig_f2, "M") = f1.Range("F11").Value 'copie de "Participant 3"
    f2.Cells(Lig_f2, "N") = f1.Range("F13").Value 'copie de "Participant 4"

    f2.Cells(Lig_f2, "P") = f1.Range("H5").Value 'copie de "Participant 5"
    f2.Cells(Lig_f2, "Q") = f1.Range("H7").Value 'copie de "Participant 6"
    f2.Cells(Lig_f2, "R") = f1.Range("H9").Value 'copie de "Participant 7"
    f2.Cells(Lig_f2, "S") = f1.Range("H11").Value 'copie de "Participant 8"
    f2.Cells(Lig_f2, "T") = f1.Range("H13").Value 'copie de "Participant 9"

    f2.Cells(Lig_f2, "U") = f1.Range("J5").Value 'copie de "Participant 10"
    f2.Cells(Lig_f2, "V") = f1.Range("J7").Value 'copie de "Participant 11"
    f2.Cells(Lig_f2, "W") = f1.Range("J9").Value 'copie de "Participant 12"
    f2.Cells(Lig_f2, "X") = f1.Range("J11").Value 'copie de "Participant 13"
    f2.Cells(Lig_f2, "Y") = f1.Range("J13").Value 'copie de "Participant 14"
    f2.Cells(Lig_f2, "Y") = f1.Range("J15").Value 'copie de "Participant 15"

    'Quadrillage
    f2.Range("A2:Y" & Lig_f2).Borders().Weight = xlThin

    'Appel à la macro "Comptage" pour remplissage feuille "Tableau"
    Comptage
    If Non_Conforme = True Then GoTo Protection

    'Effacement du formlaire
    f1.Range("D7,D9,D11,D16,D19,D20,F13,F11,F9,F7,F5,H5,H7,H9,H11,H13,J15,J13,J11,J9,J7,J5").Value = ""

Protection:
    f2.Protect Password:="ADM", DrawingObjects:=True, Contents:=True, Scenarios:=True
    f3.Protect Password:="ADM", DrawingObjects:=False, Contents:=True, Scenarios:=False
    f1.Select
    'Libération de la  mémoire
    Set f1 = Nothing
    Set f2 = Nothing
    Set f3 = Nothing
End Sub

Sub Comptage()
    'déclaration des variables uniquement pour cette macro
    Non_Conforme = False

    Application.ScreenUpdating = False 'Empêche les rafraichissements de l'écran lors de l'exécution du code, et augmente la vitesse d'éxcution
    DerLig_f3 = f3.Range("B" & Rows.Count).End(xlUp).Row 'recherche la dernière ligne de f3

    Duree = f1.Cells(13, "D") 'on récupère la valeur de la durée
    Theme = f1.Cells(16, "D") 'on récupère la valeur du thème
    'si "Theme" est vide alors on va lire "Autre theme"
    If Theme = "" Then GoTo Autre_Theme
    DeuxPoints_Theme = InStr(1, Theme, " :", 1) 'on recherche la position des ":"  dans le nom de "Theme"
    Init_Theme = Left(Theme, DeuxPoints_Theme - 1) 'on ne conserve que la partie gauche de theme (tout ce qui est avant les 2 points ":")

Autre_Theme:
    AutreTheme = Trim(f1.Cells(19, "D")) 'on récupère la valeur de l'autre thème
    'si "Theme" est vide alors on va lire "Controle_Présence_Themes"
    Init_AutreTheme = Trim(AutreTheme) 'on supprime les espaces inutiles dans AutreTheme

Controle_conformité:
    If Theme = "" And AutreTheme = "" Or Theme <> "" And AutreTheme <> "" Then
        MsgBox "Une seule plage ""Thème"" ou ""Autre thème"" doit être remplie " 'contrôle la présence de thème ou d'autre thème
        Non_Conforme = True
        Exit Sub 'si absence des 2 ou présence des 2, alors on sort du programme
    ElseIf f1.Cells(9, "D") = "" And f1.Cells(11, "D") Then 'contrôle de la présence des horaires de début et de fin
        MsgBox "Les horaires de début et de fin ne sont pas remplis sont vides"
        Exit Sub 'si absence des 2, alors on sort du programme
    ElseIf f1.Cells(5, "F") = "" Then ' contrôle la présence du premier participant
        MsgBox "il n'y a pas de participants"
        Exit Sub 'si absence du premier participant, alors on sort du programme
    End If

    For i = 5 To 13 Step 2 'de la ligne 5 à 13 en sautant 1 ligne sur 2
        For j = 6 To 10 Step 2 'de la colonne 6 à 10 en sautant 1 colonne sur 2
            If f1.Cells(i, j) <> "" Then 'si la cellule traitée n'est pas vide, alors:
                Lig = Application.Match(f1.Cells(i, j), f3.Range("B1:B" & DerLig_f3), 0) 'on recherche le nom du participant en cours de lecture dans f2, on récupère son N° de ligne
                Select Case Init_Theme 'selon la valeur du "Theme" (uniquement la partie gauche avant les 2 points)
                    Case Is = "ETEX" 'si c'est ETEX,
                        f3.Cells(Lig, "C") = f3.Cells(Lig, "C") + Duree 'dans f3, dans la colonne correspondant à ETEX en "FMPA2024", on ajoute la durée on contenu de la cellule
                    Case Is = "SMS"
                        f3.Cells(Lig, "E") = f3.Cells(Lig, "E") + Duree
                    Case Is = "EMV"
                        f3.Cells(Lig, "G") = f3.Cells(Lig, "G") + Duree
                    Case Is = "PPBE"
                        f3.Cells(Lig, "I") = f3.Cells(Lig, "I") + Duree
                    Case Is = "SR"
                        f3.Cells(Lig, "K") = f3.Cells(Lig, "K") + Duree
                    Case Is = "MEA"
                        f3.Cells(Lig, "M") = f3.Cells(Lig, "M") + Duree
                    Case Is = "FDFEN"
                        f3.Cells(Lig, "O") = f3.Cells(Lig, "O") + Duree
                End Select
                Select Case Init_AutreTheme 'selon la valeur de "AutreTheme"
                    Case Is = "ETEX" 'si c'est ETEX,
                        f3.Cells(Lig, "D") = f3.Cells(Lig, "D") + Duree 'dans f3, dans la colonne correspondant à ETEX dans "Autre", on ajoute la durée on contenu de la cellule
                    Case Is = "SMS"
                        f3.Cells(Lig, "F") = f3.Cells(Lig, "F") + Duree
                    Case Is = "EMV"
                        f3.Cells(Lig, "H") = f3.Cells(Lig, "H") + Duree
                    Case Is = "PPBE"
                        f3.Cells(Lig, "J") = f3.Cells(Lig, "J") + Duree
                    Case Is = "SR"
                        f3.Cells(Lig, "L") = f3.Cells(Lig, "L") + Duree
                    Case Is = "MEA"
                        f3.Cells(Lig, "N") = f3.Cells(Lig, "N") + Duree
                    Case Is = "FDFEN"
                        f3.Cells(Lig, "P") = f3.Cells(Lig, "P") + Duree
                End Select
            End If
        Next j
    Next i
    f1.Select 'on sélectionne la feuille f3
End Sub

Cdlt

merci.

je viens d'essayer cela ne fonctionne pas

Bonjour,

Pourriez-vous remettre le fichier à disposition avec la dernière modification (sans données confidentielles) afin que je puisse constater moi-même, car j'ai moi ça marche très bien.

Cdlt

bonjour,

voilà

Bonjour,

Excusez pour la réponse tardive mais gros problèmes de PC.

Sinon ça marche bien, le contrôle est effectué à partir du moment où vous cliquez sur le bouton.

alfamaxou
Rechercher des sujets similaires à "formule condition"