Si cellule B3 non vide alors metre PE dans D3
Bonjour
je souhaite de l'aide pour continuer le fichier que je suis en train de développer.
Mon problème à résoudre est que dans chaque feuilles qui possède un tableau structuré (feuilles qui peuvent être ajouter où supprimer), je puisse:
Si BP "Mettre PE" clic
Alors
Quand la colonne "C3" est non vide -> Mettre en "D3" "PE"
La mise en forme conditionnelle mettra la couleur automatiquement en "D3"
J'ai essayé avec un bout de code récupéré sur le site , mais je n'arrive à le faire fonctionner.
J'ai volontairement mis ce code avec ' devant
Merci de votre aide
PS: Le reste du code fonctionne , mais je suis preneur pour les améliorations que vous pourrez lui apporter
Bonjour,
Si j'ai bien compris :
Private Sub CommandButton3_Click()
Dim i%, Y%
For i = 3 To Worksheets.Count
With Worksheets(i)
For Y = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
If Not IsEmpty(.Cells(Y, 3)) Then .Cells(Y, 4) = "PE"
Next Y
End With
Next i
End SubPar contre les "PE" sont inscrits en orange, je me suis fait avoir en pensant qu ma macro ne fonctionnait pas.
Cdlt,
Bonsoir Ergotamine
Parfais ton code.
Je vais essayer de comprendre mon, mes erreur(s)
Merci
En voyant le résultat je suis poser la question suivante:
Faut-il mette une alerte avec boite de dialogue yes no pour valider le choix
OU
Faut-il un mot de passe pour verrouiller cet autorisation de clic.
Ou
Créer par un "mot de pass " , l'autorisation d’accéder la la feuille administrateur et data.
Ce fichier étant partager entre des opérateurs qui remplisse la colonne "D" , qui lorsque c'est "NON" donc cellule "D" devient rouge et en cellule "E" mettre un commentaire.
Le BP ne servant que pour la génération du "Pas Essayer" au départ
Dans l'attente de te relire
Merci
Bonjour,
Dès lors que nous rentrons dans l'aspect autorisation d'accès cela devient plus complexe car pour quelqu'un qui connait il y aura toujours moyen de contourner. Cependant, on peut donner accès à la feuille ADMINISTRATEUR que via l'utilisateur connecté :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Application.UserName = "Lilly" Then 'A adapter
Worksheets("ADMINISTRATEUR").Visible = xlVerryHidden
ThisWorkbook.Protect "MDP", True, False
ThisWorkbook.Save
End If
End Sub
Private Sub Workbook_Open()
If Application.UserName = "Lilly" Then 'A adapter
ThisWorkbook.Unprotect "MDP"
With Worksheets("ADMINISTRATEUR")
.Visible = True
.Activate
End With
End If
End SubVous pouvez aussi tout simplement faire quelque chose du style :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Worksheets("ADMINISTRATEUR").Visible = xlVerryHidden
ThisWorkbook.Protect "MDP", True, False
ThisWorkbook.Save
End SubCette dernière méthode me semble plus robuste. Quelque soit la personne, à la fermeture du classeur, la feuille ADMINISTRATEUR est masquée et un mot de passe est appliqué sur le classeur empêchant l'activation de la feuille sans passer par Révision > Protéger le classeur > Et renseigner le MDP pour en ôter la protection. Ainsi pas besoin de macro Workbook_Open.
PS : Le code est à placer dans le module ThisWorkbook.
Cdlt,
Bonsoir
Merci pour ton avis, et ne maitrisant pas encore assez les codes VBA, je vais mettre tes codes dans ma base doc, cela pourrait être utile plus tard.
J'ai résolu ma protection BP "Mettre PE" en faisant appel à une seconde userform, ou là je doit saisir un Password qui exécute le code que tu ma donné , et qui fonctionne parfaitement.
Par contre en analysant le résultat, je me suis aperçu que j'avais oublié d'effacer de:
Cells(Y, 5)à Cells(Y, 10)Donc je me suis mis à la recherche pour pouvoir mettre une seconde instruction a:
Private Sub CommandButton3_Click()
Dim i%, Y%
For i = 3 To Worksheets.Count
With Worksheets(i)
For Y = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
If Not IsEmpty(.Cells(Y, 3)) Then .Cells(Y, 4) = "PE"
Next Y
End With
Next i
End SubJe t'avoue que je n'y suis pas encore arrivé.
Peux-tu me réaliser cela stp
Merci
Bonjour,
Si vous souhaitez effacer cette plage sous les mêmes conditions que citées alors :
Private Sub CommandButton3_Click()
Dim i%, Y%
For i = 3 To Worksheets.Count
With Worksheets(i)
For Y = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
If Not IsEmpty(.Cells(Y, 3)) Then
.Cells(Y, 4) = "PE"
.Range(.Cells(Y, 5), .Cells(Y, 10)).ClearContents
End If
Next Y
End With
Next i
End SubCdlt,
Bonjour a tous
Bonjour Ergotamine
Grand merci pour ton code.
Je n'ai pas fais attention au With, donc au " ." qui permet de faire une liste d'instruction à la suite.
De plus je savais que je devais utilisé "Range , mais je suis partie avec le Delete.
Si j'ai bien compris delete doit être associer avec DerLig
Je clos ce sujet en te disant Merci pour ton aide