Macro recopier une cellule sous condition
bonjour,
voila quelques temps que je cherche à réaliser les deux actions suivantes sur le fichier joint :
Il s'agit d'un fichier de suivi d'actions sur l'année (une feuille par mois) :
->je voudrai que lorsque la cellule "urgent" Colonne H apparait (j'ai créé une condition pour que cela apparaisse au bout de 15 jours lorsque la remarque n'est pas réalisée), que la ligne soit recopiée en feuille urgent.
Attention chaque feuille correspond à un mois de l'année et doit répondre également à cette condition.
La feuille urgent doit cumuler toutes les actions non réalisées de toutes les feuilles sans les écraser.
->Je voudrai, que lorsque l'utilisateur complète sur la même ligne la cellule remarque (colonne D), cela verrouille les colonnes A, B, C, D de la ligne. Ainsi les autres utilisateurs ne pourront plus modifier la cellule
Pour cette dernière requête j'ai testé ce code :
Private Sub Worksheet_Change(ByVal Target As Range)
' NB : La protection est associée à un mot de passe : "mp"
If Not Intersect(Target, Range("D3:D300")) Is Nothing Then 'Valable seulement pour la Plage D3:D300
'Suppression de la protection de la feuille
ActiveSheet.Unprotect
If Range("d" & Target.Row).Select <> "" Then
Target.EntireRow.Locked = True
End If
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End Sub
Le problème c'est que cela verrouille toute la feuille et non pas la seule cellule complétée.
Merci de votre aide.
Salut,
Tu ne t’es pas vraiment cassé la tête pour ton fichier exemple. 11 feuilles de mois n’ont pas la même structure que celle de janvier et il n’y a pratiquement aucunes données d’inscrites.
J’ai alors créé une feuille Décembre 2013 pour avoir plus d’exemples échus et j’ai supprimé toutes les feuilles qui n’avaient pas la structure voulue.
A chaque fois que tu sélectionnes la feuille ‘Urgent’, le code mis en place visite toutes les feuilles qui ne s’appellent pas ‘Urgent’ ou ‘Paramétrage’ et y reporte les données urgentes en fonction des modifications sur les feuilles des mois. Les données en place sur cette feuille sont à chaque fois effacées.
C’est un bon début ?
merci beaucoup, en effet je n'avais jamais réussi à me rapprocher autant de ce résultat.
Juste quelques questions, en espérant ne pas trop abuser de votre gentillesse :
->quand le fichier s'ouvre, un second fichier similaire s'ouvre à chaque fois. Quelle commande faut-il modifier pour éviter ce "bug"
->quand je veux remettre mes listes déroulantes pour les noms d'utilisateurs et la colonne "réalisée/non réalisée", au moment de l'enregistrement j'ai le message :"avertissement de confidentialité : le document contient des macro, active x, kit extension xml. Ils peuvent contenir des informations qui ne peuvent être supprimés par l'inspecteur de document".
J'ai bien fait fonctionner l'inspecteur de document, mais rien n'y fait, Avez-vous une solution en tête.
->pouvez-vous me faire un macro identique, avec le même principe pour les actions "non réalisée" qui serait recopiée sur une page "non réalisée" au lieu de "urgent"
j'ai testé cela mais ça bug :
Option Explicit
Private Sub Worksheet_Activate()
Dim i As Integer, j As Integer, DerLig As Integer, DerLig_non réalisée As Integer
Application.ScreenUpdating = False
Rows("3:" & Rows.Count).Delete
For i = 1 To Sheets.Count
If Sheets(i).Name = "non réalisée" Or Sheets(i).Name = "Paramétrage" Then GoTo Etiquette
DerLig = Sheets(i).Range("A" & Rows.Count).End(xlUp).Row
For j = 3 To DerLig
If Sheets(i).Range("A" & j) = "" Then GoTo Etiquette_Bis
If Sheets(i).Range("F" & j) = "non réalisée" Then
DerLig_Urgent = Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets(i).Range("A" & j & ":E" & j).Copy Range("A" & DerLig_Urgent)
End If
Etiquette_Bis:
Next j
Etiquette:
Next
End Sub
merci pour vos conseils et encore désolé pour le fichier d'origine mais je voulais montrer un exemple simple. Le document de travail créé n'existe pas pour le moment c'est pour cela qu'il était vide.
Salut,
Si tu as deux fois le même fichier qui s’ouvre, ce n’est pas un bug, c’est simplement que je l’ai voulu ainsi. Afin de pouvoir voir deux feuilles en même temps, j’ai ouvert une deuxième fenêtre et j’ai placé ces deux « fichiers identiques » l’un à côté de l’autre sur mon écran par l’option ‘Affichage/Réorganiser tout’. J’ai simplement oublié de refermer l’une des deux fenêtres avant de poster mon fichier. Si tu observes le haut de la fenêtre Excel, tu vois que l’une des deux fenêtres a le signe distinctif :1 après l’extension .xls et l’autre à le signe :2. Si tu cliques sur la croix en-dessous de celle nécessaire à fermer Excel, tu refermes l’une de ces deux fenêtres, tu enregistres et le tour est joué. Tu n’as alors plus de signe
Dans ma première macro, j’ai considéré que tu n’avais que deux feuilles qui n’étaient pas des feuilles de mois. Si tu ajoutes des feuilles, tu dois notamment modifier cette première macro. Je l’ai fait dans le fichier ci-joint.
J’ai également placé une nouvelle feuille ‘Non réalisée’ et la macro qui va avec.
En ce qui concerne le message :"avertissement de confidentialité …", je ne sais trop que te dire. Sur certains fichiers reçus par le Forum, on a ce problème et je n’ai pas toujours compris – ni chercher à comprendre – d’où venait le problème. J’ai cherché un peu du côté des macros (mais il n’y en a pas d’autres que la mienne), du côté des ‘Noms’, mais il semble qu’ils fassent tous références à des feuilles du fichier lui-même et non pas à d’autres fichiers. Alors je ne sais pas trop que te dire, si ce n’est qu’il faut peut-être repartir sur un fichier vierge, y placer les feuilles nécessaires et copier-coller les macros.
A te relire.
encore merci pour tous ces services,
j'ai bien suivi ce que tu m'as dit et voila ma situation :
1- je n'arrive pas à mettre tes macros dans mon fichier finalisé, voici le message d'erreur, en cliquant sur l'onglet visual basic et en insérant la macro dans la page voulu :
"Les fonctionnalités suivantes ne peuvent pas être enregistrées dans le classeur sans macro. Pour enregistrer sélectionner un fichier prenant en charge les macros dans la liste type de fichier".
2-Lorsque j'insère la macro, j'ai encore l'ancien message d'erreur qui apparait à l'enregistrement alors que j'ai bien refais le fichier de A à Z sans copié collé
peux-tu reprendre mon fichier en pièce jointe et essayer tes macros.
A bientôt.
Salut,
Avec les versions Excel 2007 et suivantes, tu dois enregistrer ton fichier soit au format .xlsx (sans macro), soit .xlsm (avec macro). Là tu essaies d’enregistrer un fichier contenant des macros au format .xlsx. Anciennement, le format .xls permettait d’enregistrer indifféremment des fichiers avec ou sans macros. Ce choix s'effectue à l'enregistrement du fichier (choisir le bon 'Type').matos a écrit :"..... voici le message d'erreur, ........Les fonctionnalités suivantes ne peuvent pas être enregistrées dans le classeur sans macro. Pour enregistrer sélectionner un fichier prenant en charge les macros dans la liste type de fichier".
Je ne sais toujours pas d’où vient le problème. J’ai refait ton fichier de B à Z (j’ai juste pris la feuille janvier comme base, mais j’ai créé par exemple de nouveaux ‘Noms’) et ça semble jouer comme ça.matos a écrit :Lorsque j'insère la macro, j'ai encore l'ancien message d'erreur qui apparait à l'enregistrement alors que j'ai bien refais le fichier de A à Z sans copié collé
A toi de compléter les mois manquants.
Cordialement.
Merci pour tout tes efforts, toutes tes solutions m'ont permis de réaliser exactement ce que je voulais.
bonne journée.