Effacer le contenu de cellules si ....
Résolu/Fermé
anthony
-
12 oct. 2010 à 10:52
Mike-31 Messages postés 18309 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 14 mars 2024 - 20 oct. 2010 à 15:13
Mike-31 Messages postés 18309 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 14 mars 2024 - 20 oct. 2010 à 15:13
A voir également:
- Effacer le contenu de cellules si ....
- Fusionner le contenu de 2 cellules excel - Guide
- Excel additionner des cellules - Guide
- Word a trouvé du contenu illisible - Guide
- Que doit-il faire pour effacer les traces de sa navigation ? - Guide
- Effacer les cookies - Guide
12 réponses
Mike-31
Messages postés
18309
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 mars 2024
5 071
Modifié par Mike-31 le 12/10/2010 à 11:33
Modifié par Mike-31 le 12/10/2010 à 11:33
Salut,
Jette un oeil sur cette discussion le code peut être facilement adapté à tes besoin, à la place de coloriser en rose en vérrouiller le cellule il suffit de l'effacer
https://forums.commentcamarche.net/forum/affich-19344173-cellule-coloriee-si-reactive#p19459360
Pour l'adapter à ton fichier, il faudrait nous le joindre avec ce lien
https://www.cjoint.com/
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Jette un oeil sur cette discussion le code peut être facilement adapté à tes besoin, à la place de coloriser en rose en vérrouiller le cellule il suffit de l'effacer
https://forums.commentcamarche.net/forum/affich-19344173-cellule-coloriee-si-reactive#p19459360
Pour l'adapter à ton fichier, il faudrait nous le joindre avec ce lien
https://www.cjoint.com/
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Mike-31
Messages postés
18309
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 mars 2024
5 071
12 oct. 2010 à 13:48
12 oct. 2010 à 13:48
Re,
J'ai récupéré ton fichier, en fait tu souhaites que si les valeurs de la colonne D sont modifiées 4 fois, les cellules de H à K soit effacées, c'est bien cela !
J'ai récupéré ton fichier, en fait tu souhaites que si les valeurs de la colonne D sont modifiées 4 fois, les cellules de H à K soit effacées, c'est bien cela !
non un seul changement doit effacer les autres cellules.
donc avec le fichier joint, le document serait mis à jour donc on entrerait dans la base de données et pour le premier doc, on remplacerait "L" par "M3.
si c'était les autres doc on passerait de "F" à "G"
Les valeurs de le colonne D ne peuvent avancer que de +1
donc avec le fichier joint, le document serait mis à jour donc on entrerait dans la base de données et pour le premier doc, on remplacerait "L" par "M3.
si c'était les autres doc on passerait de "F" à "G"
Les valeurs de le colonne D ne peuvent avancer que de +1
Mike-31
Messages postés
18309
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 mars 2024
5 071
12 oct. 2010 à 14:20
12 oct. 2010 à 14:20
Re,
Avant d'écrire ton code j'essaye de comprendre, colonne D tu saisis des lettres, si ces lettres changent une fois, on efface les données des cellules de H à K
détaille moi cette phrase,
entrerait dans la base de données et pour le premier doc, on remplacerait "L" par "M3.
si c'était les autres doc on passerait de "F" à "G"
En D tu rencontres que les lettres L et F !
par exemple en D tu as L par quelle lettre remplaces tu le L par M3 ou c'est la macro qui doit faire le changement sur quel critère
Idem si en D tu as F tu le remplaces par G
Avant d'écrire ton code j'essaye de comprendre, colonne D tu saisis des lettres, si ces lettres changent une fois, on efface les données des cellules de H à K
détaille moi cette phrase,
entrerait dans la base de données et pour le premier doc, on remplacerait "L" par "M3.
si c'était les autres doc on passerait de "F" à "G"
En D tu rencontres que les lettres L et F !
par exemple en D tu as L par quelle lettre remplaces tu le L par M3 ou c'est la macro qui doit faire le changement sur quel critère
Idem si en D tu as F tu le remplaces par G
Bonjour,
en fait le fichier que j'ai joint est utilisé actuellement donc nous sommes déjà aux versions L et F pour les documents mis en exemple.
imaginons qu'aujourd'hui j'écrive une nouvelle procédure. celle ci serait référencée dans ma base avec le numéro "00000001" révision "A" et le titre "ma procédure". J'envoie ce document aujourd'hui à la société A et B. j'inscris les dates dans la colonne H. la société A me retourne l'AR, j'inscris la date en colonne I avec le fichier en lien hypertexte en colonne L.
la société B ne me renvoie rien donc je procède à différentes relances que je note en colonnes J et K.
Dans un mois je vais me rendre compte que j'ai oublié une information dans ma procédure, donc j'insère cet oubli dans mon doc. je vais dans ma base de données et je change la lettre de révision (colonne D), je marque B. et quand ce changement se fait, j'aimerais que la seconde ligne soit aussi en révision B et que les colonnes H, I, J, K et L deviennent vides car je dois renvoyer le document mis à jour.
et ainsi le formatage conditionnel montrera à l'assistante que le doc doit être envoyé car les deux lignes sont vertes.
je ne sais pas si je suis clair :-/
en fait le fichier que j'ai joint est utilisé actuellement donc nous sommes déjà aux versions L et F pour les documents mis en exemple.
imaginons qu'aujourd'hui j'écrive une nouvelle procédure. celle ci serait référencée dans ma base avec le numéro "00000001" révision "A" et le titre "ma procédure". J'envoie ce document aujourd'hui à la société A et B. j'inscris les dates dans la colonne H. la société A me retourne l'AR, j'inscris la date en colonne I avec le fichier en lien hypertexte en colonne L.
la société B ne me renvoie rien donc je procède à différentes relances que je note en colonnes J et K.
Dans un mois je vais me rendre compte que j'ai oublié une information dans ma procédure, donc j'insère cet oubli dans mon doc. je vais dans ma base de données et je change la lettre de révision (colonne D), je marque B. et quand ce changement se fait, j'aimerais que la seconde ligne soit aussi en révision B et que les colonnes H, I, J, K et L deviennent vides car je dois renvoyer le document mis à jour.
et ainsi le formatage conditionnel montrera à l'assistante que le doc doit être envoyé car les deux lignes sont vertes.
je ne sais pas si je suis clair :-/
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Mike-31
Messages postés
18309
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 mars 2024
5 071
18 oct. 2010 à 16:40
18 oct. 2010 à 16:40
Re,
Plusieurs discussions pertinentes en même temps j'avais zappé la tienne excuse
Fais un clic droit sur l'onglet de ta feuille/Visualiser le code et colle ce code
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([D8:D250], Target) Is Nothing Then
If Target = "B" Then
Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target.Offset(1, -1) = Target.Offset(0, -1) Then Target.Offset(1, 0) = Target
End If
End If
End Sub
Lorsque tu saisiras un B majuscule les quatres cellules de la ligne, colonne H, I, J et K s'effaceront, si à la ligne inférieure la même valeur est en colonne C, colonne D sera saisi automatiquement un B et les cellules de la ligne, colonne H, I, J et K seront également effacées
Plusieurs discussions pertinentes en même temps j'avais zappé la tienne excuse
Fais un clic droit sur l'onglet de ta feuille/Visualiser le code et colle ce code
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([D8:D250], Target) Is Nothing Then
If Target = "B" Then
Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target.Offset(1, -1) = Target.Offset(0, -1) Then Target.Offset(1, 0) = Target
End If
End If
End Sub
Lorsque tu saisiras un B majuscule les quatres cellules de la ligne, colonne H, I, J et K s'effaceront, si à la ligne inférieure la même valeur est en colonne C, colonne D sera saisi automatiquement un B et les cellules de la ligne, colonne H, I, J et K seront également effacées
J'ai essayé et ça fonctionne du tonerre.
par contre tu vas dire que je suis très pénible mais ça ne fonctionne que pour les documents nouvellement créés qui sont A et passeront en B lors d'une mise à jour.
j'ai des documents anciens qui sont déjà C, D .... comment modifier le VBA pour que ça fonctionne aussi pour eux ?
concrètement j'ai le document 3 qui est C et il passe en D
le document 26 est G et il passe en H
par contre tu vas dire que je suis très pénible mais ça ne fonctionne que pour les documents nouvellement créés qui sont A et passeront en B lors d'une mise à jour.
j'ai des documents anciens qui sont déjà C, D .... comment modifier le VBA pour que ça fonctionne aussi pour eux ?
concrètement j'ai le document 3 qui est C et il passe en D
le document 26 est G et il passe en H
Mike-31
Messages postés
18309
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 mars 2024
5 071
Modifié par Mike-31 le 19/10/2010 à 11:21
Modifié par Mike-31 le 19/10/2010 à 11:21
Re,
je t'écris un code dans l'après midi
et jusqu'a quelle lettre dois tu aller de A à Z !
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
je t'écris un code dans l'après midi
et jusqu'a quelle lettre dois tu aller de A à Z !
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
si on atteint Z, on continue avec AA, AB, AC etc
pour ma base actuelle ce n'est pas encore le cas mais le projet va être déployer sur uen base plus importante avec des documents en version AG
pour ma base actuelle ce n'est pas encore le cas mais le projet va être déployer sur uen base plus importante avec des documents en version AG
Mike-31
Messages postés
18309
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 mars 2024
5 071
19 oct. 2010 à 14:45
19 oct. 2010 à 14:45
Clic droit sur l'onglet de feuille concerné/Visualiser le code et remplace l'ancien code par ce dernier qui prendra en compte tous changement jusqu'à AZ
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([D8:D250], Target) Is Nothing Then
If Target = "B" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "C" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "D" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "E" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "F" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "G" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "H" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "I" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "J" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "K" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "L" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "M" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "N" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "O" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "P" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "Q" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "R" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "S" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "T" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "U" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "V" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "W" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "X" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "Y" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "Z" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AA" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AB" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AC" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AD" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AE" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AF" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AG" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AH" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AI" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AJ" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AK" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AL" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AM" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AN" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AO" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AP" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AQ" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AR" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AS" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AT" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AU" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AV" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AW" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AX" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AY" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AZ" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target.Offset(1, -1) = Target.Offset(0, -1) Then Target.Offset(1, 0) = Target
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([D8:D250], Target) Is Nothing Then
If Target = "B" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "C" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "D" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "E" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "F" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "G" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "H" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "I" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "J" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "K" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "L" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "M" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "N" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "O" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "P" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "Q" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "R" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "S" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "T" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "U" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "V" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "W" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "X" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "Y" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "Z" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AA" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AB" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AC" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AD" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AE" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AF" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AG" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AH" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AI" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AJ" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AK" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AL" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AM" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AN" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AO" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AP" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AQ" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AR" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AS" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AT" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AU" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AV" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AW" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AX" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AY" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AZ" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target.Offset(1, -1) = Target.Offset(0, -1) Then Target.Offset(1, 0) = Target
End If
End Sub
trop fort tu es
ça fonctionne nickel
ça va faire gagner quelques secondes à chaque fois et surtout ça va réduire le nombre d'erreur de saisie.
juste une question. si l'assistante se plante et change la lettre par inadvertance, la fonction "annuler" n'est plus utilisable, seule la fermeture du fichier fera revenir à l'état précédent ?!
en tous les cas je te remercie pour ta réactivité et ta solution.
je n'hésite pas àrevenir vers toi dès que j'ai uen autre idée ^^
ça fonctionne nickel
ça va faire gagner quelques secondes à chaque fois et surtout ça va réduire le nombre d'erreur de saisie.
juste une question. si l'assistante se plante et change la lettre par inadvertance, la fonction "annuler" n'est plus utilisable, seule la fermeture du fichier fera revenir à l'état précédent ?!
en tous les cas je te remercie pour ta réactivité et ta solution.
je n'hésite pas àrevenir vers toi dès que j'ai uen autre idée ^^
Mike-31
Messages postés
18309
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 mars 2024
5 071
19 oct. 2010 à 15:47
19 oct. 2010 à 15:47
Effectivement si tu te trompes le seul recours est de fermer sans enregistrer et réouvrir le fichier.
Il est possible d'insérer une boite de dialogue de mise en garde en début de procédure ce qui se traduira par une confirmation pour chaque ligne, à tester.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([D8:D250], Target) Is Nothing Then
MyValue = MsgBox("Souhaitez vous remplacer la lettre de révision par: " & Target, _
vbYesNo + vbCritical + vbDefaultButton1, "Attention modification de données en " & Target.Address)
If MyValue = vbNo Then
MsgBox "veuillez remplacer le : " & Target & " en " & Target.Address & " par l'ancienne valeur", , _
"Vous souhaitez annuler la dernière saisie "
Exit Sub
Else
If Target = "B" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "C" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "D" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "E" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "F" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "G" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "H" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "I" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "J" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "K" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "L" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "M" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "N" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "O" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "P" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "Q" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "R" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "S" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "T" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "U" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "V" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "W" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "X" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "Y" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "Z" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AA" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AB" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AC" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AD" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AE" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AF" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AG" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AH" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AI" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AJ" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AK" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AL" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AM" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AN" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AO" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AP" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AQ" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AR" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AS" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AT" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AU" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AV" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AW" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AX" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AY" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AZ" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target.Offset(1, -1) = Target.Offset(0, -1) Then Target.Offset(1, 0) = Target
End If
End If
End Sub
Il est possible d'insérer une boite de dialogue de mise en garde en début de procédure ce qui se traduira par une confirmation pour chaque ligne, à tester.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([D8:D250], Target) Is Nothing Then
MyValue = MsgBox("Souhaitez vous remplacer la lettre de révision par: " & Target, _
vbYesNo + vbCritical + vbDefaultButton1, "Attention modification de données en " & Target.Address)
If MyValue = vbNo Then
MsgBox "veuillez remplacer le : " & Target & " en " & Target.Address & " par l'ancienne valeur", , _
"Vous souhaitez annuler la dernière saisie "
Exit Sub
Else
If Target = "B" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "C" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "D" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "E" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "F" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "G" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "H" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "I" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "J" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "K" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "L" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "M" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "N" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "O" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "P" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "Q" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "R" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "S" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "T" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "U" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "V" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "W" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "X" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "Y" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "Z" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AA" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AB" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AC" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AD" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AE" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AF" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AG" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AH" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AI" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AJ" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AK" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AL" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AM" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AN" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AO" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AP" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AQ" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AR" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AS" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AT" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AU" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AV" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AW" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AX" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AY" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target = "AZ" Then Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target.Offset(1, -1) = Target.Offset(0, -1) Then Target.Offset(1, 0) = Target
End If
End If
End Sub
fort, très fort
je vais rester avec la première solution car là on perd tout le temps gagné avec les boîtes de dialogue. parfois j'ai 10 lignes pour le même doc et ça implique 10 confirmations.
Sinon il faudrait seulement une boîte qui dise "confirmez vous le changement de révision ?" quand tu rentres la nouvelles valeur. si OUI les lignes suivantes basculent aussi sans confirmation. Si NON la boîte de dialogue se ferme et l'ancienne lettre se remet comme si on faisait un "annuler"
mais bon ne t'embête pas car là ça va devenir plus compliqué, déjà tu m'as rendu un grand service.
je vais rester avec la première solution car là on perd tout le temps gagné avec les boîtes de dialogue. parfois j'ai 10 lignes pour le même doc et ça implique 10 confirmations.
Sinon il faudrait seulement une boîte qui dise "confirmez vous le changement de révision ?" quand tu rentres la nouvelles valeur. si OUI les lignes suivantes basculent aussi sans confirmation. Si NON la boîte de dialogue se ferme et l'ancienne lettre se remet comme si on faisait un "annuler"
mais bon ne t'embête pas car là ça va devenir plus compliqué, déjà tu m'as rendu un grand service.
Mike-31
Messages postés
18309
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 mars 2024
5 071
Modifié par Mike-31 le 19/10/2010 à 22:04
Modifié par Mike-31 le 19/10/2010 à 22:04
Re,
En testant mon code, je me suis aperçu que si tu saisissais accidentellement une valeur en D alors qu'en C la cellule était vide la lettre saisie bouclait jusqu'en fin de plage.
j'ai revu mon code et te conseille de tester ce dernier largement épuré
à coller à la place de l'ancien
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([D8:D250], Target) Is Nothing Then
If Target <> "" And Target.Offset(0, -1) <> "" Then
MyValue = MsgBox("La valeur de la cellule: " & Target.Address & " vient d'être remplacée par " & Target & vbLf & vbLf & _
"souhaitez vous continuer", vbYesNo + vbCritical + vbDefaultButton1, "Des données sont en cours de modifications")
If MyValue = vbYes Then
Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target.Offset(1, -1) = Target.Offset(0, -1) Then
Target.Offset(1, 0) = Target
End If
End If
End If
End If
End Sub
Si tu souhaites supprimer la boite de dialogue efface la pratie en gras et un End If
Si tes attentes sont satisfaites, met le statut de la discussion en résolu merci
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
En testant mon code, je me suis aperçu que si tu saisissais accidentellement une valeur en D alors qu'en C la cellule était vide la lettre saisie bouclait jusqu'en fin de plage.
j'ai revu mon code et te conseille de tester ce dernier largement épuré
à coller à la place de l'ancien
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([D8:D250], Target) Is Nothing Then
If Target <> "" And Target.Offset(0, -1) <> "" Then
MyValue = MsgBox("La valeur de la cellule: " & Target.Address & " vient d'être remplacée par " & Target & vbLf & vbLf & _
"souhaitez vous continuer", vbYesNo + vbCritical + vbDefaultButton1, "Des données sont en cours de modifications")
If MyValue = vbYes Then
Range(Target.Offset(0, 4), Target.Offset(0, 7)).ClearContents
If Target.Offset(1, -1) = Target.Offset(0, -1) Then
Target.Offset(1, 0) = Target
End If
End If
End If
End If
End Sub
Si tu souhaites supprimer la boite de dialogue efface la pratie en gras et un End If
Si tes attentes sont satisfaites, met le statut de la discussion en résolu merci
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
c'est ce qu'on appelle condenser un programme ^^
promis je ferme le sujet
juste savoir si la boîte de dialogue peut apparaître seulement une fois.
Si le document 21 est sur 15 lignes la boîte de dialogue apparaît 15 fois, l'idéal serait de confirmer une fois le changement et ensuite les 14 lignes suivantes basculent.
par contre pour le NON c'est vraiment bien, maintenant ça remet l'ancienne valeur.
promis je ferme le sujet
juste savoir si la boîte de dialogue peut apparaître seulement une fois.
Si le document 21 est sur 15 lignes la boîte de dialogue apparaît 15 fois, l'idéal serait de confirmer une fois le changement et ensuite les 14 lignes suivantes basculent.
par contre pour le NON c'est vraiment bien, maintenant ça remet l'ancienne valeur.
Mike-31
Messages postés
18309
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 mars 2024
5 071
20 oct. 2010 à 15:13
20 oct. 2010 à 15:13
Re,
bien sur il est possible de faire apparaitre la boite de dialogue q'une seule fois mais avec un code différent et déclenchement avec un bouton ce qui est plus contraignant. Dans le cas présent, on demande au système de boucler sur une action. En clair si on chage une valeur en D on efface les cellules de H à K et si la référence en C est identique on recommence donc en D nouvelle valeur qui relance le processus.
Je vais voir si on peut shunter cette apparition avec un autre code
bien sur il est possible de faire apparaitre la boite de dialogue q'une seule fois mais avec un code différent et déclenchement avec un bouton ce qui est plus contraignant. Dans le cas présent, on demande au système de boucler sur une action. En clair si on chage une valeur en D on efface les cellules de H à K et si la référence en C est identique on recommence donc en D nouvelle valeur qui relance le processus.
Je vais voir si on peut shunter cette apparition avec un autre code
12 oct. 2010 à 11:56
voici le fichier
j'ai donc du formatage conditionnel sur chaque ligne si le doc est à envoyer, envoyé, l'AR reçu (ça explique les différentes couleurs)
et si je change l'indice de révision de la première ligne, peut on faire en sorte que l'indice de révision de la seconde ligne soit également automatiquement changé vu qu'il s'agit du même document ?!