Vérifier la valeur des cellule dans une ligne

Résolu
zahr kall Messages postés 63 Statut Membre -  
zahr kall Messages postés 63 Statut Membre -
Bonjour à tous,

Je suis entrain de réaliser un tableau excel et je bloque sur un problème :

Je souhaite vérifier la valeur des cellules dans une ligne (de A89 à Z89) et bloquer les colonnes dont la valeur de ces cellules est égale à 0.
Comme je débute en vba, je n'arrive pas à bout de ce problème. J'ai compris qu'il me faut lancer une boucle (For...next?), mais ça ne donne rien pour le moment.
Merci d'avance à ceux qui pourront m'éclairer!!
Bonne journée.

10 réponses

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Ce petit bout de code devrait t'aider :

    Dim ws As Worksheet
    Dim col As Integer
    Dim lig As Integer
    
        Set ws = Worksheets(1)
        lig = 89
        
        For col = 1 To 26
            If ws.Cells(lig, col).Value = 0 Then
                ws.Columns(col).EntireColumn.Hidden = True
            End If
        Next col
        
        Set ws = Nothing

    Bon courage

    ;o)

    Polux
    -1
  2. zahr kall Messages postés 63 Statut Membre 10
     
    merci beaucoup,
    ça marche presque!!

    le soucis qu'il me reste, c'est qu'au lieu de mettre "ws.Columns(col).EntireColumn.Hidden = True,
    je voudrais quelques chose comme ws.Columns(col).EntireColumn.locked = True.
    Sauf que là, forcément, ça ne marche pas!! :(
    j'ai tenté plusieurs formules, mais en vain.
    Je vais continuer à chercher chez moi, car là, c'est pour mon boulot et j'ai fini ma semaine !!^^

    Merci encore pour ce gros coup d'main!
    bon week end.
    -1
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonsoir,

    par défaut toutes les cellules d'une feuille sont verrouillées.
    Il faut activer la protection pour que ce soit actif (menu 'outil / protection')
    N'oublie pas de déverrouiller les cellules devant avoir une saisie...
    eric
    -1
  4. zahr kall Messages postés 63 Statut Membre 10
     
    Justement,

    je vérouille des cellules, puis j'en déverrouille d'autres. C'est assez le bazard, car c'est un tableau de saisie que je met à dispo pour tous mes collaborateurs et j'ai mis pleins de contrôles pour éviter qu'un collaborateur saisisse à la place d'un autre. Bref, voici la ligne de commande lorsque que la vérification du collaborateur est faite (avec son "matricule") :

    Private Sub valider_btn_Click()

    If matricule.Value = "" Then

    MsgBox "vous n'avez pas saisi votre matricule."

    ElseIf ActiveCell.Offset(0, 251).Value = Int(matricule.Value) Then

    ActiveSheet.Unprotect Password:="XXX"

    Range(Trim(Str(ActiveCell.Row)) & ":" & Trim(Str(ActiveCell.Row))).Select

    Selection.Locked = False
    Selection.FormulaHidden = False

    Application.Goto reference:="r1c2"
    ActiveCell.Offset(0, 0).Value = Int(matricule.Value)

    Range("C2").Value = Range("c2").Value + 1

    Dim ws As Worksheet
    Dim col As Integer
    Dim lig As Integer

    Set ws = Worksheets(1)
    lig = 89

    For col = 1 To 212
    If ws.Cells(lig, col).Value = 0 Then
    ws.Columns(col).Locked = True
    End If
    Next col

    Set ws = Nothing


    Application.Goto reference:="r6c5"
    ActiveSheet.Protect Password:=XXX", DrawingObjects:=True, Contents:=True, Scenarios:=True

    Unload Verif

    MsgBox "saisissez vos souhaits maintenant en notant 'CP' ou 'RTT' sur les jours choisis."

    Else

    MsgBox "vous n'avez pas bien saisi votre matricule."

    End If

    End Sub


    voilà où j'en suis. Si t'as une idée pour me permettre de revérrouiller les colonnes concernées, ce serait vraiment génial. là, ça ne marche toujours pas et je ne sais plus trop quoi faire...
    -1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Ben si ça marche, pourquoi ça ne marcherait pas ? (pour la partie en gras en tout cas...)
    Et si tu précisais ce qui te fais dire que ça ne marche pas ?
    Qu'est-ce que tu veux obtenir exactement ?
    Remarque là tu verrouilles si 0 ou "", c'est ça qui te gene ?
    -1
  7. zahr kall Messages postés 63 Statut Membre 10
     
    Non, ce qui me gêne, c'est que lorsque je clique sur mon bouton valider j'ai ce message qui apparait :

    Erreur d'exécution '1004':
    Impossible de définir la propriété Locked de la classe Range


    Et dans la macro, la ligne ws.Columns(col).Locked = True apparait en surligné, comme si c'est cette ligne qui pose problème.

    Et c'est donc mon problème, car pour moi ma ligne de commande est bonne.
    -1
  8. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    j'ai testé chez moi je n'ai pas cette erreur ici...
    Regarde quand même quelle est la valeur de col au moment de cette erreur des fois qu'elle soit modifiée par une macro evenement.
    eric
    -1
  9. zahr kall Messages postés 63 Statut Membre 10
     
    Salut,
    je ne sais pas faire ce que tu me demandes : vérifier la valeur de col...
    je vais regarder si j'y arrive quand même
    -1
  10. zahr kall Messages postés 63 Statut Membre 10
     
    Désolé pour le double post, mais j'ai trouvé entre temps :

    Dim ws As Worksheet
    Dim col As Integer
    Dim lig As Integer

    Set ws = Worksheets(1)
    lig = 89

    For col = 1 To 212
    If ws.Cells(lig, col).Value = 0 Then
    MsgBox ("valeur de col :" & col & "!")
    ws.Columns(col).Locked = True
    End If
    Next col

    Et avec ce message, pour le moment, j'ai "1" puis "3". Donc je pense que mon problème apparait à la colonne 3 ou 4.
    Il ne me reste plus qu'à voir ce qu'il en est. c'est pas gagné...
    -1
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      -pour voir la valeur d'une variable tu fais 'affichage / fenetre espions', tu sélectionnes ta variable dans le code et tu fais un cliqué-glissé vers la fenetre espion.
      -ou bien tu poses le curseur souris sur le nom de la variable dans le code, au bout d'une temporisation sa valeur (si elle a été évaluée) apparait
      -tu peux poser un point d'arret dans le programme pour qu'il s'arrete à cette ligne : cliquer dans la marge grise à gauche du code, ta ligne passe en marron et un point marron apparait dans la marge.
      - à partir du point d'arret tu peut faire en pas à pas avec F8 et suivre l'évolution de tes variables.
      -F5 relance le programme en abandonnant le pas à pas (jusqu'au prochain point d'arret
      eric
      -1
  11. zahr kall Messages postés 63 Statut Membre 10
     
    ça y est!!! le problème venait de la fusion de plusieurs cellules, hors tableau (ligne 96, alors que le tableau était jusqu'à la ligne 89). du coup, je n'avais pas fait attention...
    Bref, maintenant tout fonctionne.
    Encore merci pour l'aide et le temps passé pour m'aider.
    c'est vraiment sympa.
    Bonne soirée et bon week end.
    -1