Insrire une fonction par rapport a une cellule

Bonsoir,

Je souhaiterai s’il vous plait, quand je rentre un nombre dans une des cellules de la colonne « Jour »(L6C1 à L16C1) la formule =DATEVAL(CONCATENER(Jour;"/";Mois;"/";Année)) s’inscrive dans la colonne « Date » à coté du nombre entré dans la colonne « Jour ».

Et je voudrai que la formule s’efface si le nombre ajouté dans la colonne « Jour » est effacé.

Et cela automatiquement.

En vous remerciant.

Michel.

capture excel

Bonjour,

Je suggère que tu mettes :

=SI(A6<>"";DATE($B$2;$A$2;A6);"")

Cela me paraît plus rationnel et économique.

Cordialement

Merci MFerrand,

J'avais fait quelque chose dans la même genre avec "SI". Mais je voulais que la formule soit effacée si il n'y a pas de nombre en A1,A2.....

Je pense que cela peut se faire en VBA, mais je ne sais pas le faire.

Cordialement.

Bien sûr que c'est possible en VBA mais c'est une complication inutile. Si des raisons font que l'on est amené a substituer une procédure VBA à des formules, il est alors préférable d'utiliser VBA pour calculer et affecter la date directement, plutôt que lui faire insérer ou effacer une formule (dont la raison d'être est de demeurer en permanence où on l'a mise pour renvoyer une valeur quand elle le doit... [sauf cas très particulier, il peut toujours y en avoir]).

Cordialement

Bonsoir,

Je n'ai pas été clair dans ma demande initiale. Voilà ce que je souhaite.

Je voudrai sélectionner la zone B6 :E10 dans l’image jointe. La ligne 10 varie suivant le nombre de cellules ayant une valeur dans la colonne A.

Par exemple, si la colonne A est remplie jusqu’à la cellule 13, la zone à sélectionner sera B6 :E13.

Je ne peux pas faire de macro : B6 dernière cellule pleine car la colonne B « Date » contient des formules et la sélection va jusqu’à la derniere formule de la colonne, soit dans mon tableau à la ligne 100.

J’ai essayé de faire une macro suivante :

Sub Macro7()

Range("A6").Select

Range(Selection, Selection.End(xlDown)).Select

Range(Selection, Selection.End(xlToRight)).Select

Range("A6:E10").Select

End Sub

Et je n’ai pas trouvé la façon de modifier pour que la sélection devienne B6 :E10 en supprimant la colonne A de la zone de sélection.

Merci.

Bonsoir,

Si tu termines ta macro en sélectionnant A6:E10 dans ta dernière ligne, je ne vois pas comment tu escompterais obtenir la sélection de B6:E10 !

Et comme à chaque ligne tu fais une nouvelle sélection (qui remplace donc la précédente), c'est un jeu qui peut continuer sans fin.

La première sélection doit être la bonne ! Ou au moins ne pas être remise en question à la ligne suivante mais seulement donner lieu à redimensionnement...

Mais là n'est pas l'essentiel. Si cet exercice que je qualifierais - excuse-moi ! - de futile, peut t'entraîner à un meilleur maniement du code, son effet positif s'arrête là.

En travaillant manuellement sur Excel, tu te déplaces continuellement d'une feuille à l'autre, sur la même feuille... Tu sélectionnes donc sans arrêt et c'est normal car il faut en général que tu voies ce que tu fais. De même, tu copies, tu colles, tu déplaces... selon les besoins, tu mets des formules ici ou là pour afficher des résultats... C'est toi qui fait !

Mais dès lors que tu utilises VBA, il faut bien comprendre que ce n'est plus toi qui va faire, tu programmes des instructions et des commandes pour qu'elles soient exécutées sans que tu aies besoin d'intervenir durant l'exécution, même si c'est toi qui lance le démarrage de l'exécution en appuyant sur un bouton ou autrement.

Et donc vouloir que la machine t'imite lorsque tu utilises Excel manuellement n'est rien d'autre que faire perdre du temps au programme qui, lui, peut s'en dispenser.

Ce qui importe donc, c'est définir le résultat que tu veux obtenir, et voir comment le programmer le plus simplement possible (ce qui est généralement plus simple que concocter une formule un peu élaborée) à partir de la situation qui sera existante au lancement de la macro, sans Select ni Selection qui sont autant de mouvements inutiles.

Cordialement

Bonjour et encore merci pour tes explications,

Je vais essayer d’être clair. Feuille 2, quand je rentre le jour dans la colonne A, c'est que la date s’inscrive colonne B. Cela j’y suis arrivé. Avec ton aide, j’ai modifié la formule.

Ensuite je complète mes colonnes C,D ou E.

Après, Feuille 2 je veux sélectionner la zone B6 : E10 ou E11 ou E...suivant le nombre de lignes et la copier sur Feuille 1 à la suite des cellules déjà complétées.

Cordialement.

capture releve

Tant mieux (pour toi) si je t'ai aidé, mais il n'y a aucun dialogue...

La question est : pourquoi Sélectionner pour Copier ? Alors que l'on peut Copier sans Sélectionner !!

Et la question suivante : pourquoi Copier-Coller ? Alors que l'on peut prélever les valeurs pour les affecter ailleurs.

Bonjour,

Je me rends compte que je n'ai pas été si clair que cela. Voilà pourquoi Sélectionner pour Copier ? Alors que l'on peut Copier sans Sélectionner !!

Dans la Feuille 1, je rentre les opérations au jour le jour, à la suite.

Dans la Feuille 2, ce sont les opérations qui se répètent mensuellement en ne changeant que le mois ou l'année et ajuster les jours. Et plutôt que de les rentrer une à une chaque mois dans la Feuille 1, je veux les recopier de la Feuille 2 à la Feuille 1.

Je pourrai le faire manuellement par Sélection, Copier et Coller mais je voulais automatiser.

Merci.

Décidément, les idées ancrées ont du mal...

Manuellement, tu sélectionnes, tu copies, tu colles, normal ! Tu n'as d'ailleurs pas le choix...

Tu souhaites automatiser, donc VBA : on change de registre ! Coup de balai sur la méthode précédente et programmation avec les moyens et outils que te propose VBA ! Tu as le choix là, il y a d'autres façons de faire...

Je m'en suis sorti en enregistrant une macro.


Je m'en suis sorti en enregistrant une Macro.

Rechercher des sujets similaires à "insrire fonction rapport"