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 -
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.
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.
A voir également:
- Vérifier la valeur des cellule dans une ligne
- Aller à la ligne dans une cellule excel - Guide
- Partager des photos en ligne - Guide
- Verifier compatibilite windows 11 - Guide
- Mètre en ligne - Guide
- Formulaire en ligne de meta - Guide
10 réponses
Bonjour,
Ce petit bout de code devrait t'aider :
Bon courage
;o)
Polux
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
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.
ç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.
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
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
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...
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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ?
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 ?
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.
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.
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
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
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
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
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é...
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é...
-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
-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
ç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.
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.