Copier une date en fonction du contenu de plusieurs cellules

Bonjour,

Je souhaiterais trouver une solution a un probleme qui me semble assez complexe.

je vais essayer d'etre le plus clair possible.

Je dois remplir un tableau tous les jours avec un menu deroulant dans une cellule de 3 choix situé sous une case contenant la date du jour.

le lendemain je rempli la case d'a coté et le jour d'apres la case d'a coté etc etc cela me permet d'avoir un historique.

Ce que je souhaiterais c'est que lorsque je fais le choix 3 aujourd hui, une autre case ( A1) affiche la date d'aujourd'hui et la conserve jusqu'a ce que je selectionne a nouveau le choix 3 et que la date se mette a jour.

En cherchant j'ai trouvé des solution: utiliser la cellule active de la collone A et si je fais le choix 3 dans la cellule active je met en A1 la date du jour. par contre comment faire pour la conserver affichee en A1 jusqu'a la prochaine fois.

etant vraiment débutant si les formules ne sufissent pas a réaliser ce que je souhaiterais faire, pourriez vous me donner une marche a suivre pour creer une macro .

Merci d'avance pour votre aide .

Matthieu

Bonjour,

Sans fichier... je ne peux que répondre : évènementielle (Change) qui après test affecte s'il y a lieu la date du jour en A1...

NB- "Cellule active de la colonne A" n'a pas de sens, il ne peut y avoir qu'une seule cellule active dans la feuille.

Cordialement.

bonjour voici une partie du fichier. ce que je souhaite c'est afficher la derniere panne (la derniere fois que j'ai coché sur sa la croix rouge ) dans la case J10 pour la ligne 10, j11 pour la ligne 11 etc

Merci encore pour votre aide

Matthieu

12classeur13.zip (53.97 Ko)

La question initiale était de mettre la date du jour en A1.

La question est devenue mettre une date en J. S'agit-il toujours de la date du jour ?

Préciser ce qu'il y a lieu de faire par rapport à un évènement précis.

La question n'est pas anodine, les en-têtes de ton tableau ne comportant pas de date, on n'aura pas de contrôle exhaustif de la date à insérer (seulement à la marge (dernière cellule de la ligne ou à la rigueur quantième du jour), sauf à la recalculer à chaque fois...

Je suis par ailleurs dubitatif sur le rôle de ta SelectionChange...

Cordialement.

Bonjour,

Ce que je souhaiterais c'est que si je met une croix rouge en AW10, il y ai marqué 4 Fevrier en J10,

Si j'ai oublié de dire qu'il y avait une panne hier par exemple et que je met un croix en AV11 , qu'il y ait 3 fevrier qui s'affiche en J11.

en fait les cases J doivent me donner la date de la derniere panne sur chaque installation afin de savoir depuis quand l'installation fonctionne sans arret.

Je ne sais meme pas ce qu'est la selection change . je suis vraiment débutant donc pour l'instant la seule chose que j'ai su faire c'est ouvrir VBA editor et double cliquer sur ma feuille, selectionner worksheet et apres je me suis inspiré de lignes trouvees sur le net et j'ai bidoullé une ligne pour avoir ce resultat.

Pour le fichier j'ai mis des dates sur la ligne 9 , sans doute plus pratique pour avoir un repère !

Je ne sais pas si c'est possible a faire mais en tout cas merci pour votre aide

Cordialement

Matthieu

7classeur13.zip (53.11 Ko)

Je vais essayer de vous dire ce que je voudrais faire précisemment en francais car je ne sais par le coder.

Lire la ligne 10 de gauche a droite a partir de la colonne K jusqu'a arriver a une cellule vide.

a partir de ce point revenir vers la gauche jusqu'a rencontrer une case remplie avec un X.

a partir de ce point regarder 1 case au dessus (ligne 9) la date affichée.

ecrire cette date en j10.

Lire la ligne 11 de gauche a droite a partir de la colonne K jusqu'a arriver a une cellule vide.

revenir vers la gauche jusqu'a rencontrer une case remplie avec un X.

regarder 2 case au dessus (ligne 9) la date affichée.

ecrire cette date en j11.

ainsi de suite pour toutes les lignes de mon tableau .

sauf si vous connaissez un moyen plus simple d'arriver a ce resultat.

Bonjour,

A partir du moment où la date est identifiable en ligne 9, pas de problème ! D'ailleurs, si tu ne tiens pas à garnir toute la ligne de dates, une seule suffirait pour savoir de quelle date on part, et donc à quelle date on se trouve dans chaque colonne.

Ma journée est "médicale" (la partie médicale ne durera que 15 minutes à tout casser, mais avec déplacement + attente ça bouffe tout l'après-midi). Si tu peux patienter jusqu'à ce soir, j'aurai le temps de détailler un peu plus...

Colonne J, OK ! Mais que devient A1 : doit-il y avoir une date ? et qui correspond à quoi ?

Cordialement.

Pas de problemes je ne suis pas pressé

j'avais dis a1 au hasard car c'etait une case vide qui me permettait de faire des essais et si j'avais la solution pour a1 je pouvais ensuite la reproduire sur j10,j11,j12...... .

merci encore.

Bonsoir,

Une version formule pour commencer :

=SI(NB.SI($O10:$IV10;"X")>0;INDEX($9:$9;GRANDE.VALEUR(SI($O10:$IV10="X";COLONNE($O10:$IV10);0);1));"")

La formule est matricielle (se valide par Ctrl+Maj+Entrée).

J'ai limité la plage à la colonne IV car ton fichier est en .xls, donc limité à 256 colonnes. Ce qui veut dire que tu ne rentreras pas une année si tu en avais l'intention. Il serait bon dans ce cas de le convertir au nouveau format .xlsx (ou .xlsm avec macro) s'il peut n'être utilisé que sur des versions d'Excel à partir de 2007 [16384 colonnes alors, ça laisserait de la marge].

Si tu transfères la formule dans un autre classeur, efface la macro SelectionChange (elle n'est pas utile, mais te déclencheras des erreurs).

Pour une version macro, je regarde ça demain.

Bonne soirée.

Bonjour,

Merci pour la reponse . je viens d'essayer la formule et en J10 et ca me marque #valeur

Cordialement

Matthieu


A si ca marche super bien. c'est magique par contre j'aimerais bien comprendre la formule pourriez vous me traduire cette formule en francais

Merci encore

J'ai voulu essayer une petite modif mais ca ne fonctionne pas.

Pourriez vous me dire pourqu'oi ca n'accepte pas le "ou" et comment faire pour faire ce que j'ai essayé de faire.

Merci

=SI(NB.SI($O10:$IV10;ou("X";"Δ"))>0;INDEX($9:$9;GRANDE.VALEUR(SI($O10:$IV10;ou("X";"Δ");COLONNE($O10:$IV10);0);1));"")

J'ai essayé comme ca aussi mais le resultat marque FAUX

=SI(NB.SI($O11:$IV11;OU("X";"Δ"))>0;INDEX($9:$9;OU(GRANDE.VALEUR(SI($O11:$IV11="X";COLONNE($O11:$IV11);0);1);GRANDE.VALEUR(SI($O11:$IV11="Δ";COLONNE($O11:$IV11);0);1);"")))

Bonjour,

Mauvaise syntaxe pour l'utilisation de OU...

Mais inutile de persister avec, les OU et ET sont réfractaires à la matricialisation, et tu auras problablement comme résultat 0 avec...

Tu peux essayer avec un SI imbriqué :

=SI(NB.SI($O10:$IV10;"X")>0;INDEX($9:$9;GRANDE.VALEUR(SI($O10:$IV10="X";COLONNE($O10:$IV10);SI($O10:$IV10="Δ";COLONNE($O10:$IV10);0));1));"")

Si tu obtiens #VALEUR! c'est a-priori que tu as omis de valider matriciellement.

Et comment obtiens-tu ce triangle, qui ne figure pas dans la table, qui renvoie le code 63 (correspondant au ?) mais qui évidemment n'est pas reproduit par le même code ?

Cordialement.

Pour compléter, 'traduction' de la formule :

=SI(NB.SI($O10:$IV10;"X")>0;INDEX($9:$9;GRANDE.VALEUR(SI($O10:$IV10="X";COLONNE($O10:$IV10);0);1));"")

L'expression en gras renvoie une matrice de même taille que la plage O10:IV10, composée du numéro de colonne de la cellule de cette plage lorsqu'elle contient la valeur "X", ou 0 dans le cas contraire.

GRANDEVALEUR(matriceprécédente;1) renvoie la valeur la plus élevée de ladite matrice, soit le numéro de colonne du "X" le plus à droite (le plus récent donc.

Cette dernière valeur est utilisée comme indice par INDEX appliquée à la ligne 9 en entier (contenant les dates correspondant à chaque colonne) pour renvoyer la date du "X" le plus récent.

La condition encadrant cette formule prévient l'erreur qui surviendrait si la ligne ne contient aucun "X".

Cordialement.

finalement je vais faire une deuxieme case avec la derniere fois que j'ai eu un Δ

ca fonctionne tres bien merci encore pour votre aide

Rechercher des sujets similaires à "copier date fonction contenu"