chemin forcé

S

serge

Guest
Bonjour à tous.
Est-il possible de saisir une valeur dans une cellule (mettons A1) et de l'obliger à aller se mettre en B1 si B1 est vide, sinon en B2, etc. etc. Le but étant de saisir une donnée mensuelle et que celle-ci aille sagement se ranger à sa place sans écraser les copines des mois précédents.
Merci beaucoup de vos recherches.
 
M

Michel_M

Guest
Bonjour Serge,

Ci joint une proposition (col D au lieu de B dans ta demande mais...)

A+
Michel
 

Pièces jointes

  • compiler.zip
    7.2 KB · Affichages: 22
  • compiler.zip
    7.2 KB · Affichages: 23
  • compiler.zip
    7.2 KB · Affichages: 26
M

Michel_M

Guest
salut Fredennes et tt le monde


Pas facile, ta question !…


Cette macro est dite événementielle ( + de détail : voir site de Laurent Longre):

L’événement ici est la sélection d’une cellule. Pour sélectionner ce genre de macro, il te faut aller dans l’éditeur VBA de la feuille en cours, i*tu sélectionne Worksheet dans la liste déroulante de gauche sélection_change est inscrit par défaut (regarde les autres possibilités dans la liste de droite°


Dans un premier temps, on limite l’action de l’événement à une zone, ici A1, car sinon, la macro se déclencherait chaque fois que tu cliques

Le pseudo code pourrait s’écrire
Si l’intersection de la cible et la de la cellule « A1 » est vide alors fin du process

A noter que then : end interromps toutes les macros en cours
Then : exit sub sort de la macro et éventuellement continue la macro mère


N° de la 1° ligne vide :
Syntaxe tirée du site d’Eric Renaud (site à consulter d’urgence pour les amateurs de VBA)

Dans l’objet columns 1 (1=A en affichage L1C1) trouve (find) la valeur vide après la cellule D65536 (après D65536 on a D1)) en cherchant par rangée (xlbyrows). Appliquer la propriété Row (rangée)

Pour plus de détails consultes l’aide microsoft de Find… Tu peux commencer ta recherche à la hauteur que tu veux

IL y a d’autre formules toutes aussi valables pour trouver la 1° ligne égale à X ou vide que tu verras souvent sur le forum

Une fois que tu as le numéro de la ligne j’ai employé cells(lig,col) mais tu peux employer range(« D » &lig)

On serait tenter de marquer range’(« A1 »).value mais l’objet range possède la propriété value par défaut.


Voilà, voilà. Cette macro est symbolique pour moi car ce pb a été le premier que j’avais essayé de résoudre par macro il y a quelques 3,5 ans… Le listing n’était pas le m^me avec des boucles usine-à-gaz et des copy paste pas piqués des vers…. Tout ça pour te dire que ce qu’un imbécile à pu faire, quelqu’un de normalement constitué etc .

Comme tu veux progresser (fais gaffe : vba n’est pas toujours LA solution : tant que tu peux utiliser les fonctions excel, évites vba) tu trouves sur la toile des cours super .
Tu as Bien sûr XLD, Le site le + pédagogique que j’ai trouvé (avis perso) est info-3000.com .
sur ce forum ou sur les sites : télécharges, vois ce que ça donne ; Relis en pas à pas en utilisant l’espion (menu déboguage) et utilises aussi l’aide Microsoft qui souvent précieuse.

Amicalement
Michel


Pas facile, ta question !…


Cette macro est dite événementielle ( + de détail : voir site de Laurent Longre):

L’événement ici est la sélection d’une cellule. Pour sélectionner ce genre de macro, il te faut aller dans l’éditeur VBA de la feuille en cours, i*tu sélectionne Worksheet dans la liste déroulante de gauche sélection_change est inscrit par défaut (regarde les autres possibilités dans la liste de droite°


Dans un premier temps, on limite l’action de l’événement à une zone, ici A1, car sinon, la macro se déclencherait chaque fois que tu cliques

Le pseudo code pourrait s’écrire
Si l’intersection de la cible et la de la cellule « A1 » est vide alors fin du process

A noter que then : end interromps toutes les macros en cours
Then : exit sub sort de la macro et éventuellement continue la macro mère


N° de la 1° ligne vide :
Syntaxe tirée du site d’Eric Renaud (site à consulter d’urgence pour les amateurs de VBA)

Dans l’objet columns 1 (1=A en affichage L1C1) trouve (find) la valeur vide après la cellule D65536 (après D65536 on a D1)) en cherchant par rangée (xlbyrows). Appliquer la propriété Row (rangée)

Pour plus de détails consultes l’aide microsoft de Find… Tu peux commencer ta recherche à la hauteur que tu veux

IL y a d’autre formules toutes aussi valables pour trouver la 1° ligne égale à X ou vide que tu verras souvent sur le forum

Une fois que tu as le numéro de la ligne j’ai employé cells(lig,col) mais tu peux employer range(« D » &lig)

On serait tenter de marquer range’(« A1 »).value mais l’objet range possède la propriété value par défaut.


Voilà, voilà. Cette macro est symbolique pour moi car ce pb a été le premier que j’avais essayé de résoudre par macro il y a quelques 3,5 ans… Le listing n’était pas le m^me avec des boucles usine-à-gaz et des copy paste pas piqués des vers…. Tout ça pour te dire que ce qu’un imbécile à pu faire, quelqu’un de normalement constitué etc .

Comme tu veux progresser (fais gaffe : vba n’est pas toujours LA solution : tant que tu peux utiliser les fonctions excel, évites vba) tu trouves sur la toile des cours super .
Tu as Bien sûr XLD, Le site le + pédagogique que j’ai trouvé (avis perso) est info-3000.com .
sur ce forum ou sur les sites : télécharges, vois ce que ça donne ; Relis en pas à pas en utilisant l’espion (menu déboguage) et utilises aussi l’aide Microsoft qui souvent précieuse.

Amicalement
Michel
v
 

Discussions similaires

Réponses
3
Affichages
678

Statistiques des forums

Discussions
312 329
Messages
2 087 324
Membres
103 516
dernier inscrit
René Rivoli Monin