Toogle Button cacher/ désactiver colonne

Bonjour,

Je souhaite réaliser un fichier dans lequel je peux cacher certaines colonnes avec un bouton toogle, jusque la pas de souci je maîtrise

En plus de cela, j'aimerai "automatiser" la cellule active selon le principe suivant :

A l'ouverture du fichier la cellule active correspond à la première cellule vide de la première ligne vide.

Ensuite je voudrais que à chaque fois que la cellule active est remplie avec une valeur que le programme passe automatiquement à la cellule vide suivante sur la même ligne et ce jusqu' a la colonne 21.

Pour ensuite retourner automatiquement au début de la ligne suivante.

Le bouton doit donc tenir compte des colonnes ( E, H, K, M, P, S) cachées lors du déplacement de la cellule active : Si colonne caché alors ne pas mettre de valeur dans cette colonne. (passer à la suivante)

J'espère être compréhensible

8book1.xlsm (21.96 Ko)

Ci-joint un exemple.

Merci d'avance

Bonjour,

Une proposition ...

Cordialement.

12book1.xlsm (23.69 Ko)

Bonjour,

Merci de votre aide cela semble répondre au besoin !

J'essai l'ensemble du code dans mon fichier et vous dis si je rencontre un problème.

Bonjour,

J'ai procédé à l'intégration de votre code dans mon fichier mais j'ai un problème de variable que je ne parviens pas à résoudre... voir ligne avec ToogleButton...

Code :

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

Dim I As Integer
Dim B As Integer

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

Application.EnableEvents = False
'
If Target = "" Then
    Call Positionnement
Else
    'If Target.Column = 20 Then Call ValidateList(Target.Row)
End If
'
Application.EnableEvents = True

'si colonne T
If Target.Column = 20 And Cells(ActiveCell.Row, 1).Value <> "" Then

    '...puis inscrit par défaut OK dans la cellule de la colonne T
    Cells(ActiveCell.Row, 20).Value = "OK"

    'boucle

[color=#FF0000] If ToggleButton1.Value = True Then [/color]

   For I = 4 To 19

    If Cells(ActiveCell.Row, I).Interior.ColorIndex = 3 And Cells(ActiveCell.Row, 3).Value <> Cells(ActiveCell.Row - 1, 3).Value Then

            Cells(ActiveCell.Row, 20).Value = "NOK"

    If Cells(4, I).Interior.ColorIndex = 3 Then

            Cells(ActiveCell.Row, 20).Value = "NOK"

    End If
    End If

    If Cells(ActiveCell.Row, I).Interior.ColorIndex = 3 And Cells(ActiveCell.Row, 3).Value = Cells(ActiveCell.Row - 1, 3).Value Then Cells(ActiveCell.Row, 20).Value = "NOK"

    Next I

    Else

   For I = 4 To 19

        'si la couleur de la cellule en cours est différente de vert, NOK et fin !
        If Cells(ActiveCell.Row, I).Interior.ColorIndex <> 4 And Cells(ActiveCell.Row, 3).Value <> Cells(ActiveCell.Row - 1, 3).Value Then

            Cells(ActiveCell.Row, 20).Value = "NOK"

        If Cells(4, I).Interior.ColorIndex <> 4 Then

            Cells(ActiveCell.Row, 20).Value = "NOK"

            End If
            End If

        If Cells(ActiveCell.Row, I).Interior.ColorIndex <> 4 And Cells(ActiveCell.Row, 3).Value = Cells(ActiveCell.Row - 1, 3).Value Then Cells(ActiveCell.Row, 20).Value = "NOK"

  Next I

    If Cells(ActiveCell.Row, 20).Value = "OK" Then
    Cells(ActiveCell.Row, 21).Value = "Validée"
    Call Positionnement
    End If

    If Cells(ActiveCell.Row, 20).Value = "NOK" And Cells(ActiveCell.Row, 3).Value <> Cells(ActiveCell.Row - 1, 3).Value Then
    MsgBox " Démonter le produit et refaire les mesures !", vbCritical + vbOKOnly, "Résultat des mesures"
    Call Positionnement
    End If

    If Cells(ActiveCell.Row, 20).Value = "NOK" And Cells(ActiveCell.Row, 3).Value = Cells(ActiveCell.Row - 1, 3).Value Then
    MsgBox "Mesure non valide, appeler le responsable qualité !", vbCritical + vbOKOnly, "Validation des mesures"
    Call Positionnement
    End If

End If

End Sub

Merci d'avance de votre aide

Bonjour,

Il faut indiquer où se trouve le bouton bascule

If Sheet1.ToggleButton1.Value = True Then

De plus, je te conseille d'effectuer une analyse en pas à pas de ton programme.

L'évènement Workbook.SheetSelectionChange peut rapidement poser problème si l'activation/désactivation n'est pas correctement gérée.

Cordialement.

Bonjour,

Merci de votre réponse je test et vous fait un retour !

Cordialement

Re bonjour,

Merci de l'aide mais je suis confronté à une erreur que je ne comprend pas ... ci-joint le bout de code concerné au besoin je peux mettre le fichier complet.

Pour chaque ligne de code : Cells(ActiveCell.Row, 20).Value = "OK" J'ai l'erreur 1004....

code :

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

Dim I As Integer
Dim B As Integer
Dim BtnBascule As ToggleButton

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

Application.EnableEvents = False
'
If Target = "" Then
    Call Positionnement
Else
    'If Target.Column = 20 Then Call ValidateList(Target.Row)
End If
'
Application.EnableEvents = True

'si colonne T
If Target.Column = 20 And Cells(ActiveCell.Row, 1).Value <> "" Then

    '...puis inscrit par défaut OK dans la cellule de la colonne T
   ' Cells(ActiveCell.Row, 20).Value = "OK"           : Ligne ou apparaît l'erreur : run time error 1004 

    'boucle
If Feuil1.ToggleButton1.Value = True Then
'If BtnBascule.Value = True Then

   For I = 4 To 19

   If Cells(ActiveCell.Row, I).Interior.ColorIndex <> 3 And Cells(ActiveCell.Row, 3).Value <> Cells(ActiveCell.Row - 1, 3).Value Then

            Cells(ActiveCell.Row, 20).Value = "OK"

    If Cells(ActiveCell.Row, I).Interior.ColorIndex = 3 And Cells(ActiveCell.Row, 3).Value <> Cells(ActiveCell.Row - 1, 3).Value Then

            Cells(ActiveCell.Row, 20).Value = "NOK"

    If Cells(4, I).Interior.ColorIndex = 3 Then

            Cells(ActiveCell.Row, 20).Value = "NOK"

    End If
    End If
    End If

    If Cells(ActiveCell.Row, I).Interior.ColorIndex = 3 And Cells(ActiveCell.Row, 3).Value = Cells(ActiveCell.Row - 1, 3).Value Then Cells(ActiveCell.Row, 20).Value = "NOK"

    Next I

    If Cells(ActiveCell.Row, 20).Value = "OK" Then
    Cells(ActiveCell.Row, 21).Value = "Validée"
    Call Positionnement
    End If

    If Cells(ActiveCell.Row, 20).Value = "NOK" And Cells(ActiveCell.Row, 3).Value <> Cells(ActiveCell.Row - 1, 3).Value Then
    MsgBox " Démonter le produit et refaire les mesures !", vbCritical + vbOKOnly, "Résultat des mesures"
    Call Positionnement
    End If

    If Cells(ActiveCell.Row, 20).Value = "NOK" And Cells(ActiveCell.Row, 3).Value = Cells(ActiveCell.Row - 1, 3).Value Then
    MsgBox "Mesure non valide, appeler le responsable qualité !", vbCritical + vbOKOnly, "Validation des mesures"
    Call Positionnement
    End If

    Else

   For I = 4 To 19

        'si la couleur de la cellule en cours est différente de vert, NOK et fin !
        If Cells(ActiveCell.Row, I).Interior.ColorIndex <> 4 And Cells(ActiveCell.Row, 3).Value <> Cells(ActiveCell.Row - 1, 3).Value Then

            Cells(ActiveCell.Row, 20).Value = "NOK"

        If Cells(4, I).Interior.ColorIndex <> 4 Then

            Cells(ActiveCell.Row, 20).Value = "NOK"

            End If
            End If

        If Cells(ActiveCell.Row, I).Interior.ColorIndex <> 4 And Cells(ActiveCell.Row, 3).Value = Cells(ActiveCell.Row - 1, 3).Value Then Cells(ActiveCell.Row, 20).Value = "NOK"

  Next I

    If Cells(ActiveCell.Row, 20).Value = "OK" Then
    Cells(ActiveCell.Row, 21).Value = "Validée"
    Call Positionnement
    End If

    If Cells(ActiveCell.Row, 20).Value = "NOK" And Cells(ActiveCell.Row, 3).Value <> Cells(ActiveCell.Row - 1, 3).Value Then
    MsgBox " Démonter le produit et refaire les mesures !", vbCritical + vbOKOnly, "Résultat des mesures"
    Call Positionnement
    End If

    If Cells(ActiveCell.Row, 20).Value = "NOK" And Cells(ActiveCell.Row, 3).Value = Cells(ActiveCell.Row - 1, 3).Value Then
    MsgBox "Mesure non valide, appeler le responsable qualité !", vbCritical + vbOKOnly, "Validation des mesures"
    Call Positionnement
    End If

End If
End If
'End If

End Sub

Merci d'avance

Bonjour,

La feuille étant protégée, la cellule ne peut pas être renseignée ...

Cordialement.

Bonjour, en effet le problème provient bien du verrouillage du fichier...

Après de nombreux essais, je suis à nouveau "bloqué".

Je cherche à mettre en place une fonction de verrouillage. Celle-ci doit empêcher toutes modifications de cellules non vides (protégées via un mot de passe), tandis que les cellules vides sont accessible sans mot de passe.

Mon programme fonctionne ligne après ligne ( 21 colonnes par ligne)

Le fichier est assez lourd d'utilisation : je le met en pièce jointe si jamais cela peux aider.

Merci d'avance

Bonjour,

Je te confirme que le verrouillage du projet fonctionne bien.

Le code est inaccessible.

Cordialement.

Ha oui bien vu, j'avais oublié cette sécurité...

Nouveau fichier avec un mot de passe simple : titi

Je préfère prévenir étant débutant je pense que mon programme est une usine à gaz.

Cordialement

Bonjour,

Je ne t’ai pas oublié. J’ai tardé à répondre car j’ai passé du temps à chercher à comprendre ton programme.

Je te rassure, je n’y suis pas arrivé. La finalité de "la chose" m’échappe un tantinet. Entre le verrouillage du clavier numérique, le masquage des colonnes, la sélection de la première cellule vide, le verrouillage des cellules renseignées, la validation qualité, et j’en passe … j’ai flambé des neurones mais ça n’a pas suffi pour m’éclairer.

Pour en revenir à ce qui te préoccupe, attention car si tu empêches la modification des cellules non vides, cela signifie que tu interdis la correction d’erreurs ou toute évolution de données renseignées. C’est du lourd !

Ceci étant entendu, il faut considérer qu’initialement l’ensemble des cellules sont déverrouillées, la feuille est protégée et on autorise uniquement la sélection des cellules déverrouillées.

Note bien que les cellules étant déverrouillées, cette protection est inopérante pour la modification des valeurs.

Pour verrouiller la cellule renseignée, il faut déprotéger la feuille, verrouiller la cellule puis reprotéger la feuille.

Une autre possibilité est de déverrouiller directement par code en utilisant l’argument UserInterfaceOnly de la méthode Protect. Il n’est alors pas nécessaire de déprotéger la feuille.

Donc, pour ce que je crois comprendre, il y a une (ou plusieurs) étape(s) pour renseigner les lignes et au moins une autre pour la validation.

Pour renseigner les cellules de A jusqu’à R, tu utilises l’évènement Worksheet.Change.

Pour la validation, tu utilises l’évènement Worksheet.SelectionChange.

(D’ailleurs, en l’état je ne vois pas pourquoi tu n’utilises pas les évènements de la feuille et que tu privilégies ceux du classeur).

Dis-moi si je suis à coté du problème et donne-moi des explications complémentaires au besoin.

Cordialement.

Bonjour,

Et merci d'essayer de comprendre mon "histoire"

Pour faire simple ce programme est destiné à réceptionné des mesures envoyés par un outil de mesure.

Une ligne équivaut aux mesures d'un produit.

Les deux premières cellules correspondent à l'étalonnage de l'instrument de mesure : donc si valeur pas dans l'intervalle impossible de continuer.

La troisième colonne : représente le n° de produit.

En suite les mesures : pouvant varier de 10 à 16 points de contrôles.

Une fois les mesures faites le programme indique automatiquement : OK ou NOK en fonction des valeurs obtenues.

Puis si NOK choisi " Erreur Mesure"

Le programme retourne ensuite automatiquement a la ligne du dessous pour une nouvelle série de mesure.

Je souhaite donc que à partir du moment une une cellule reçoit la valeur envoyé par l'outil de mesure que celle-ci soit verrouillé avec pour seul possibilités de modification l'utilisation d'un mot de passe.

Globalement le problème est bien compris.

J'espère être compréhensible, merci

Un essai ...

Cordialement.

Bonjour,

Merci beaucoup le programme semble beaucoup plus propre.

Par contre quelques petites choses à modifier si possible.

Il faudrait que l'utilisateur n'est pas la possibilité de sélectionner la cellule active, ou alors que le programme le ramène automatiquement à la première cellule vide.

De plus pour les cellules D à S il faut empêcher le passage à la cellule suivante tant que la cellule active est vide....et si valeur NOK (rouge) laisser la valeur mais ne pas faire apparaître de message (mesure NOK) .

Autre problème : avec t'as méthode je ne peux plus sélectionner une ligne déjà remplie pour ensuite la supprimer grâce au bouton

Le message apparaît uniquement a la validation qualité colonne T

Voila voila

merci

Bonjour,

Ton fichier en retour ... à tester.

Cordialement.

Rechercher des sujets similaires à "toogle button cacher desactiver colonne"