Option à l'ouverture d'un fichier et autre

Re,

Bon et bien le voilà !

Re.

Je ne comprend pas ça ne fonctionne pas avec ma version d'excel

erreur tableau

Re,

Clique sur une cellule ayant la formule RECHERCHEV() et normalement, tu devrait avoir $B$5 dans l'index de colonne (troisième argument de la fonction) et bien change en $A$4 car rappelle toi, c'est dans cette cellule qu'est inscrit, à l'ouverture, l'index de la colonne correspondant au grade choisi !

Pour ça je suis d'accord avec vous, j'ai compris ce principe de renvoie. Mais du coup ce que je n'arrive pas à faire, c'est envoyer ses donnés dans la colonne B et les supprimer de la colonne A

Bonjour,

Désolé, je n'avais pas compris que c'était l'inverse que tu voulais !

Dans ce cas, c'est dans le code que tu dois faire la modif et dans la procédure "QueryClose()" et dans cette partie là :

For Each Fe In Worksheets

    If Fe.Name <> "Tableau des Taux" Then

        Fe.Range("A3").Value = Grade
        Fe.Range("A4").Value = IDCol
        Fe.Range("A4").NumberFormat = ";;;" 'rend la valeur invisible dans la cellule (visible dans la barre de formule)

    End If

Next Fe

donc, le code devient :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

    Dim Fe As Worksheet
    Dim Ctrl As Control
    Dim Cocher As Boolean
    Dim Grade As String
    Dim IDCol As Integer

    'si c'est le bouton Annuler, fin de procédure
    If Annuler = True Then Exit Sub

    For Each Ctrl In Me.Controls

        If TypeName(Ctrl) = "OptionButton" Then

            If Ctrl.Value = True Then Cocher = True: Exit For

        End If

    Next Ctrl

    'empêche la fermeture si le choix n'est pas fait
    If Cocher = False Then

        MsgBox "Vous devez sélectionner votre grade !"
        Cancel = True
        Exit Sub

    End If

    'mémorise le choix dans la variable
    Grade = Switch(OptSapeur.Value = True, "Sapeur", _
                   OptCaporal.Value = True, "Caporal", _
                   OptSousOfficier.Value = True, "Sous-Officier", _
                   OptOfficier.Value = True, "Officier")

    'défini la position de la colonne correspondante au grade dans le tableau
    '"G12:C17" de la feuille "Tableau des Taux"
    Select Case Grade

        Case "Sapeur": IDCol = 2
        Case "Caporal": IDCol = 3
        Case "Sous-Officier": IDCol = 4
        Case "Officier": IDCol = 5

    End Select

    For Each Fe In Worksheets

        If Fe.Name <> "Tableau des Taux" Then

            Fe.Range("B4").Value = Grade
            Fe.Range("B5").Value = IDCol
            Fe.Range("B5").NumberFormat = ";;;" 'rend la valeur invisible dans la cellule (visible dans la barre de formule)

        End If

    Next Fe

End Sub

Bonjour.

Super merci j'ai réussi.

J'ai enfin compris pourquoi je n'arrivai pas à rentrer dans les lignes de code: en fait pour faire alt F11 il me faut faire alt Fn F11.

Encore un grand merci pour votre aide.

Re,

Content que tu ai réussi à faire ce que tu voulais !

J'ai enfin compris pourquoi je n'arrivai pas à rentrer dans les lignes de code: en fait pour faire alt F11 il me faut faire alt Fn F11.

si tu as un HP tu peux désactiver la touche fn, regardes cette page (c'est ce que j'ai fais sur le mien !)

https://support.hp.com/fr-fr/document/c02064252

Merci pour l'info j'ai un packard bell mais je vais essayer quant même on ne sais jamais.

RE

Du coup nouvelle question qui sera la dernière:

Je viens de créer une nouvelle feuille qui s’appelle "Récapitulatif" et qui ce situe en 1er, hors quant j'ouvre le classeur et sélectionne mon grade celui ci apparait sur cette feuille et je ne voudrai pas.

J'ai fouillé un peu dans luserform mais je n'es pas trouvé de ligne qui pourrai faire que ça ne s'affiche pas sur cette feuille comme sur la feuille du tableau des taux.

Comment faire? Si besoin je joindrai le fichier.

Merci

Toujours dans QueryClose(), à la ligne ci-dessous, il te faut rajouter la feuille à éviter :

If Fe.Name <> "Tableau des Taux" And Fe.Name <> "Récapitulatif" Then

le code modifié :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

    Dim Fe As Worksheet
    Dim Ctrl As Control
    Dim Cocher As Boolean
    Dim Grade As String
    Dim IDCol As Integer

    'si c'est le bouton Annuler, fin de procédure
    If Annuler = True Then Exit Sub

    For Each Ctrl In Me.Controls

        If TypeName(Ctrl) = "OptionButton" Then

            If Ctrl.Value = True Then Cocher = True: Exit For

        End If

    Next Ctrl

    'empêche la fermeture si le choix n'est pas fait
    If Cocher = False Then

        MsgBox "Vous devez sélectionner votre grade !"
        Cancel = True
        Exit Sub

    End If

    'mémorise le choix dans la variable
    Grade = Switch(OptSapeur.Value = True, "Sapeur", _
                   OptCaporal.Value = True, "Caporal", _
                   OptSousOfficier.Value = True, "Sous-Officier", _
                   OptOfficier.Value = True, "Officier")

    'défini la position de la colonne correspondante au grade dans le tableau
    '"G12:C17" de la feuille "Tableau des Taux"
    Select Case Grade

        Case "Sapeur": IDCol = 2
        Case "Caporal": IDCol = 3
        Case "Sous-Officier": IDCol = 4
        Case "Officier": IDCol = 5

    End Select

    For Each Fe In Worksheets

        If Fe.Name <> "Tableau des Taux" And Fe.Name <> "Récapitulatif" Then

            Fe.Range("B4").Value = Grade
            Fe.Range("B5").Value = IDCol
            Fe.Range("B5").NumberFormat = ";;;" 'rend la valeur invisible dans la cellule (visible dans la barre de formule)

        End If

    Next Fe

End Sub

Ok d'accord javais essayé avec un point virgule ou en compiant la ligne en remplacant juste le nom de la feuille

Je joins mon fichier final ou persiste une erreur a l'ouverture après avoir sélectionné le grade

Ce message d'erreur apparait que si toutes les feuilles sont verrouillés s'il y'a na juste une de verrouillée aucun message.

Re,

Les feuilles sont protégées donc il n'est pas possible d'effectuer une modif, il faut déprotéger avant !

If Fe.Name <> "Tableau des Taux" And Fe.Name <> "Récapitulatif" Then

    Fe.Unprotect "230716" 'il faut ôter la protection avec de modifier la valeur de la cellule !

    Fe.Range("B4").Value = Grade
    Fe.Range("B5").Value = IDCol
    Fe.Range("B5").NumberFormat = ";;;" 'rend la valeur invisible dans la cellule (visible dans la barre de formule)

    Fe.Protect "230716" 'et ensuite, reprotéger la feuille

End If

Voici à nouveau le code :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

    Dim Fe As Worksheet
    Dim Ctrl As Control
    Dim Cocher As Boolean
    Dim Grade As String
    Dim IDCol As Integer

    'si c'est le bouton Annuler, fin de procédure
    If Annuler = True Then Exit Sub

    For Each Ctrl In Me.Controls

        If TypeName(Ctrl) = "OptionButton" Then

            If Ctrl.Value = True Then Cocher = True: Exit For

        End If

    Next Ctrl

    'empêche la fermeture si le choix n'est pas fait
    If Cocher = False Then

        MsgBox "Vous devez sélectionner votre grade !"
        Cancel = True
        Exit Sub

    End If

    'mémorise le choix dans la variable
    Grade = Switch(OptSapeur.Value = True, "Sapeur", _
                   OptCaporal.Value = True, "Caporal", _
                   OptSousOfficier.Value = True, "Sous-Officier", _
                   OptOfficier.Value = True, "Officier")

    'défini la position de la colonne correspondante au grade dans le tableau
    '"G12:C17" de la feuille "Tableau des Taux"
    Select Case Grade

        Case "Sapeur": IDCol = 2
        Case "Caporal": IDCol = 3
        Case "Sous-Officier": IDCol = 4
        Case "Officier": IDCol = 5

    End Select

    For Each Fe In Worksheets

        If Fe.Name <> "Tableau des Taux" And Fe.Name <> "Récapitulatif" Then

            Fe.Unprotect "230716" 'il faut ôter la protection avec de modifier la valeur de la cellule !

            Fe.Range("B4").Value = Grade
            Fe.Range("B5").Value = IDCol
            Fe.Range("B5").NumberFormat = ";;;" 'rend la valeur invisible dans la cellule (visible dans la barre de formule)

            Fe.Protect "230716" 'et ensuite, reprotéger la feuille

        End If

    Next Fe

End Sub

Le but recherché et que seule les cellules blanches soient modifiables. Je vais essayer le nouveaux code.

Super ça fonctionne . Par contre ça scintille à l’ouverture c'est normal?

Bonjour,

Dans ce cas, il te faut geler le rafraîchissement avec "Application.ScreenUpdating = False" :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

    Dim Fe As Worksheet
    Dim Ctrl As Control
    Dim Cocher As Boolean
    Dim Grade As String
    Dim IDCol As Integer

    'si c'est le bouton Annuler, fin de procédure
    If Annuler = True Then Exit Sub

    For Each Ctrl In Me.Controls

        If TypeName(Ctrl) = "OptionButton" Then

            If Ctrl.Value = True Then Cocher = True: Exit For

        End If

    Next Ctrl

    'empêche la fermeture si le choix n'est pas fait
    If Cocher = False Then

        MsgBox "Vous devez sélectionner votre grade !"
        Cancel = True
        Exit Sub

    End If

    'mémorise le choix dans la variable
    Grade = Switch(OptSapeur.Value = True, "Sapeur", _
                   OptCaporal.Value = True, "Caporal", _
                   OptSousOfficier.Value = True, "Sous-Officier", _
                   OptOfficier.Value = True, "Officier")

    'défini la position de la colonne correspondante au grade dans le tableau
    '"G12:C17" de la feuille "Tableau des Taux"
    Select Case Grade

        Case "Sapeur": IDCol = 2
        Case "Caporal": IDCol = 3
        Case "Sous-Officier": IDCol = 4
        Case "Officier": IDCol = 5

    End Select

    Application.ScreenUpdating = False

    For Each Fe In Worksheets

        If Fe.Name <> "Tableau des Taux" And Fe.Name <> "Récapitulatif" Then

            Fe.Unprotect "230716" 'il faut ôter la protection avec de modifier la valeur de la cellule !

            Fe.Range("B4").Value = Grade
            Fe.Range("B5").Value = IDCol
            Fe.Range("B5").NumberFormat = ";;;" 'rend la valeur invisible dans la cellule (visible dans la barre de formule)

            Fe.Protect "230716" 'et ensuite, reprotéger la feuille

        End If

    Next Fe

    Application.ScreenUpdating = True

End Sub

Salut.

Impect merci pour le code mon tableau est 100% fonctionnel.

Encore un grand merci.

Y'a t'il une option pour remercier un membre sur le forum?

Re,

Tu viens de le faire et par deux fois dans le même message donc c'est très bien et je suis content d'avoir pus t'aider !

Rechercher des sujets similaires à "option ouverture fichier"