Excel, répercution en ligne ?
RésoluLaperuk Messages postés 61 Statut Membre -
Ce que je souhaiterai c'est par exemple si sur une ligne, je rentre dans une cellule un 1 ou autres symboles.. Je voudrai qu'il y ai une répercution sur les autres cellules de la ligne, afin que celles ci se remplissent de 0 ou autre chose que 1...
Est ce possible??
- Excel, répercution en ligne ?
- Partager photos en ligne - Guide
- Liste déroulante excel - Guide
- Mètre en ligne - Guide
- Formule somme excel ligne - Guide
- Word et excel gratuit - Guide
28 réponses
Le problème consiste à faire en sorte que, lorsqu’on saisit 1 dans une cellule d’une ligne, les autres cellules de la même ligne se remplissent de 0 (ou d’une autre valeur) et que les cellules vides restent vides. Une solution retenue utilise une macro Worksheet_Change qui, si une seule cellule est modifiée et que sa valeur est 1, parcourt les colonnes de la même ligne et met 0 dans les cellules non vides, à l’exception de celle modifiée. Des limites ont été signalées, notamment des erreurs d’exécution liées à des cellules fusionnées (type mismatch), ce qui pousse à éviter les cellules fusionnées ou à adapter le code; une alternative consiste à employer une fonction SI dans les autres cellules. Des ajustements et des exemples de fichiers ont été évoqués pour illustrer et tester le comportement souhaité.
Essayer avec la fonction SI() dans les autres cellules avec condition sur la cellule (1) comme ceci :
SI(cel=1 ;0 ;autre chose)
Essayer cette procédure:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Columns.Count > 1 Then Exit Sub
If Target.Value = 1 Then
For p = 4 To 19
If p <> Target.Column Then
If Not Cells(Target.Row, p) = "" Then
Cells(Target.Row, p) = 0
End If
End If
Next
End If
End Sub
Encore merci.. Je peux avancer sereinement et surtout beaucoup plus rapidement...
Oooopsss !! Je n'ai plus d'erreur mais lorsque je mets un 1 dans une cellule fusionnée ça n'a pas de répércussion..
Par contre un 1 dans une autre case rend bien un 1 dans une cellule fusionné en 0 .. Normal??
En résumé, les cases non fusionnée ont une action sur les fusionnées mais pas inversement...
Eh bien, contrôler que vous avez la bonne procédure car, selon votre texte du débogage vous n'avez pas la bonne version!
Il manque cette ligne :
If Target.Columns.Count > 1 Then Exit Sub--
Salutations.
Le Pingou
En tout cas j'ai terminé mon projet, donc je vous envoie la version finale.. Plus rien ne bougera.. (sauf le nombre de cellules fusionnées, qui peut aller de 1 à 8)
Car je dois avouer que tout est de ma faute, à chacune de vos solutions, mon plan se modifié..
Voici la version finale, avec écrit en haut ce qui ne fonctionne pas.. Sachant que j'ai mis a jour avec la ligne manquante la macro..
Je vous remercie pour tout ce que vous avez déja fait pour moi..
Voici mon fichier final : http://www.cijoint.fr/cjlink.php?file=cj201005/cijH6qJ9ji.xls
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionMerci pour la précision, en effet avec la fonction [SI] se n'est pas réalisable.
Vous devez passer par une procédure (macro).
Essayer cette procédure valable pour les colonnes A:F à mettre dans le module de feuille:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = 1 Then
For p = 1 To 6
If p <> Target.Column Then
Cells(Target.Row, p) = 0
End If
Next
End If
End SubSalutations.
Le Pingou
Et si vous indiquiez toutes les conditions se serait plus simple !
Il n'y a pas énormément de condition, j'ai le temps de travail de chacun, quand j'inscris un 1 dans une des cases de la ligne qui représente le temps, j'ai besoin que toutes les autres changent, sauf celle étant vide représentant le RH ou RTT...
Je peux bien sur renommer ces cases vide en RH ou quoique ce soit, mais je veux que celles-ci ne deviennent pas 0 car sinon, je ne sais plus quand ils ont posé leur vacance..
Encore désolé.. Ta formule est géniale si je n'avais pas de cases vide représentant les RH, qui, avec cette formule se transforme en 0 ...
Il faut juste .... alors voilà :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = 1 Then
For p = 1 To 6
If p <> Target.Column Then
If Not Cells(Target.Row, p) = "" Then
Cells(Target.Row, p) = 0
End If
End If
Next
End If
End Sub
J'ai une petite question.. Hum, me frappes pas.. Mais des fois.. J'ai des céllules fusionnés, et avec ta formule, j'ai :
"erreur d'execution "13":
type incompatible"
Est ce que tu peux réussir à ajouter quelque chose à ce jolie macro?? ou vais je devoir revoir la présentation de mon tableur ? Encore merci en tout cas!!!
Pardon de ne pas l'avoir marqué de suite... En effet j'ai des cellules fusionnées car il y a des jours ou les après midi finissent plus tard et d'autre moins..
Encore pardon et merci si tu peux encore m'aider!!
Pour être sur le même cas il serait bien de mettre le fichier sur https://www.cjoint.com/ et poster le lien (au minimum la feuille concernée !)
Ce n'est pas le fichier en entier qui est énorme.. Juste un exemple.. pour que tu cernes mieux mon problème de cas fusionné.. Ne prends pas en compte ce qui est écrit dedans, je mettrai des 1 et des 0 ..
Encore merci de m'aider..
Ou est le problème ?
Le soucis est que lorsque je mets un 1 dans une cellule fusionnée rien ne se passe, cela ne mets pas 0 aux autres cellules...
Par contre en mettant 1 dans une cellule non fusionnée, là j'ai bien des 0 partout même dans les cellules fusionnées...
Y a t'il une solution?? Encore merci...
Eh bien c'est étrange, je viens de faire un test sur votre fichier, tout est correcte.
Votre fichier : https://www.cjoint.com/?fbrvYJC01a
Au cas ou, préciser le problème sur le fichier.
Peux tu plus me détailler comment isérer la macro??
Moi je fais, OUTIL, MACRO, visual editor macro, puis je clique deux fois sur la feuille qui correspond ou je veux mettre la macro, une fenetre blanche s'ouvre et j'y colle le macro que tu m'as donné.. Tout fonctionne bien sauf pour les cellules fusionnées.. Je te renvoie mon vrai fichier, sur lequel je bosse...
http://www.cijoint.fr/cjlink.php?file=cj201005/cijocCFIOt.xls
http://www.cijoint.fr/cjlink.php?file=cj201005/cijocCFIOt.xls
Tu verras en mettant un 1 dans une cellule fusionnée, j'ai la fameuse erreur 13 !
Il n'y a aucune erreur avec votre fichier (est-ce vraimant le vrai fichier ? ).
La procédure est correctement insérée dans le module de feuille.
Cependant, pourquoi avoir mis la valeur 60 pour le [To] alors que la valeur 8 et celle qui correspond au fichier ?
Note: dès que vous avez l'erreur 13, faite une copie d'écran et coller la sur un document Word, puis sur la fenêtre du message d'erreur clic sur Débogage et refaire une copie d'écran et la coller à la suite de l'autre puis mettre le document sur https://www.cjoint.com/
Salutations.
Le Pingou
Là j'ai bien une erreur 13, avec comme debugage ça :
Private Sub Worksheet_Change(ByVal Target As Range)
cette ligne la en jaune If Target.Value = 1 Then
For p = 2 To 6
If p <> Target.Column Then
If Not Cells(Target.Row, p) = "" Then
Cells(Target.Row, p) = 0
End If
End If
Next
End If
End Sub
Revoilà le lien...http://www.cijoint.fr/cjlink.php?file=cj201005/cijocCFIOt.xls
Dans la procédure il y avait la présence du nombre [3] devant la ligne [If Target.Value = 1 Then] (valeur non présente dans ma procédure du poste 17 du 30.5.2010 à 13 :18).
En plus votre tableau commence à la colonne [B] ou [2] et non pas la 4 comme mentionnée dans la boucle [For p = 4 To 150].
Voici votre fichier avec la procédure corrigée : https://www.cjoint.com/?fepn3O40Rl
Pas d'accord avec vous : https://www.cjoint.com/?fesnae4HcV
Je vois que pour vous cela fonctionne, mais pour moi rien du tout.. Bizarre..
Est ce la version de mon excell?? Pourtant nous travaillon sur le meme fichier vu que j'ai essayé avec votre lien... GRRR !!
Je remt le lien qui était votre lien en vous montrant que rien ne se passe..
http://www.cijoint.fr/cjlink.php?file=cj201005/cijclnGz56.xls
Je suis sous excel 97.
J'ai simplement mis 1 dans la cellule que vous pointez et voici le résultat:
https://www.cjoint.com/?ffnN3dytis
Note: avez-vous pris soin d'activer les macros à l'ouverture du fichier ?
Salutations.
Le Pingou
Normalement cela doit fonctionner sur votre PC car je viens de faire un test sur mon portable avec W98 et MSO 2000.
Pouvez-vous faire un pas à pas sur la procédure pour savoir ou le travail ne se fait pas !
En marge pouvez-vous me faire une copie d'écran avec classseur ouvert et de même pour l'éditeur de VBA (ouvrir via : touche Alt+F11)
Salutations.
Le Pingou
Que ce soit sur la ligne A, ou B.. Ou autres rien ne bouge.. La formule n'est pas active pour ces lignes ou les cellules sont fusionnées..
Par contre pour les ligne ou aucune cellule n'est fusionnée, tout fonctionne correctement.. la macro fonctionne.
Je n'ai aucune erreur, juste que la macro ne fonctionne pas pour les cellules fusionnées.
Je ne comprend pas comment détaillé plus qu'avec le fichier que j'ai joint précedemment..
En attendant l'explication pour un pas à pas sur la procédure, je vous prie d'essayer avec ce fichier sur des cellules non fusionnées et fusionnées et vous contrôlez que, selon le message, la valeur de la cellule est identique.
Le fichier : https://www.cjoint.com/?fhmdXfjsfv
Merci de votre réponse.
L'explication du pas à pas : https://www.cjoint.com/?fhpvVVvnfq
Mais pour répondre a ta question d'avant, lorsque je rentre un 1 dans les cellules non fusionnées, j'ai bien une fenêtre qui s'ouvre me disant que tel ou tel cellule à la valeur 0.
Par contre pour les cellules fusionnées, aucun message rien...
Est ce possible??
Je voudrai que lorsque je mets matin le lundi, tout devient après midi dans la ligne..
Est ce faisable?