Si Cellule remplie : verrouillée, si vide : déverrouillée

Fermé
Roro - Modifié par Roro le 2/04/2015 à 09:51
MD1990 Messages postés 6 Date d'inscription jeudi 2 avril 2015 Statut Membre Dernière intervention 6 avril 2015 - 6 avril 2015 à 19:01
Bonjour à tous,

Je sollicite à nouveau votre aide car malgré mais nombreuses heures sur les différents forums je n'ai pas trouvé de réponses qui me conviennent.

Je travaille sur un fichier excel avec des RECHERCHEV par exemple en A j'ai le nom de mes clients qui s'ajoute, et en B j'ai une RECHERCHEV qui m'indique (dès que j'ajoute un nouveau client) son statut. Or la base la base de donnée est mise à jour régulièrement et donc le statut change mais mon objectif est d'avoir le statut initial.
(Je pourrai faire un copié / collé les valeurs uniquement mais je souhaiterai pouvoir automatiser cela.)

Ma formule exacte en B1 est =SI(ESTVIDE(A1);"";RECHERCHEV(A1;"Ma base de données";2;FAUX). La colonne B contient donc soit une cellule vide "" (je ne sais pas si les macro considèrent une cellule "" comme vide) soit le statut du client.

Je suis donc à la recherche d'une méthode qui me permette d'empêcher la MAJ de la formule une fois que ma RECHERCHEV a donné un résultat.
La MACRO serait donc si vide, alors unlock si non vide alors lock.

J'espère avoir été clair, n'hésitez pas à me demander des précisions si vous en souhaitez.

En remerciant par avance toutes personnes qui voudra bien m'aider ^^

1 réponse

MD1990 Messages postés 6 Date d'inscription jeudi 2 avril 2015 Statut Membre Dernière intervention 6 avril 2015 2
3 avril 2015 à 05:15
Déjà, pour répondre à ton interrogation, oui une cellule qui contient "" est considérée comme vide par une Macro.

Ensuite, le caractère lock/unlock d'une cellule empêche de modifier la formule, mais n'empêche pas la MàJ automatique des données qu'elles contient...

Tu ne pourrais pas simplement modifier la base de données ? Du genre rajouter une colonne "statut initial" vers laquelle serait liée ta colonne B ?

Ou bien il pourrait y avoir une macro qui, dès que tu entres un nouveau client, copie son statut, et dans la cellule associée de la colonne A ne colle que les valeurs. On fait ainsi disparaitre l'aspect dynamique de ton tableau mais tu es sûr qu'aucune modification n'interviendra par la suite.

Range("A1").Copy
Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
2
Bonjour MD1990,

Avant tout, merci de t'être penché sur ma question à 5h15 du matin!!

J'aime beaucoup ta proposition, qui me permettrait de contourner mon problème.
Cependant même si j'ai passé beaucoup de temps sur les forum VBA, je ne m'y connais pas assez pour pouvoir passer à l'étape suivante.

Comment pourrais-je faire en sorte que la macro dont tu me parlais s'exécute au moment où je colle mes données clients.

Pour résumer, en A je vais coller d'un coup un certain nombre de client.
En C, je vais avoir ma RECHERCHEV qui va chercher le statut du client (statut qui sera mis à jour à chaque fois que je mettrai à jour la base)
En B, je voudrais que s'exécute automatiquement le collage des valeurs du statut (venant donc de C), mais il ne faudrait que la macro ne se déclenche qu'une fois afin de pouvoir garder le statut initial en B

Mon fichier Excel me permettra de gérer un grand nombre de données, avec une utilisation par différentes personnes, d'où ma volonté de l'automatiser au maximum, pour éviter en autre les erreurs.

J'espère avoir été clair, merci encore de ton aide.
0
MD1990 Messages postés 6 Date d'inscription jeudi 2 avril 2015 Statut Membre Dernière intervention 6 avril 2015 2 > Roro
4 avril 2015 à 03:58
Salut Roro,

Tes remerciements me vont droit au coeur, mais ne résidant pas en France, il n'était que le début de la soirée lorsque je t'ai répondu. Habituellement, à 5h du matin, je dors ;-)

Voici une solution concrète que je te propose : tu crées une feuille de calcul supplémentaire, qui fait office d'interface. Dans cette feuille de calcul, tu colles d'un coup ta liste de clients et exécute une macro qui fait tout le boulot. Cette macro peut être exécutée à partir d'un bouton, par exemple. La macro en question :
- copie la liste que tu viens d'entrer
- la colle à la suite des valeurs déjà présentes dans la colonne A.
- immédiatement ensuite, colle les valeurs contenues dans la colonne C vers la colonne B.
- et te met un petit message comme quoi tout s'est bien passé.

On peut difficilement faire plus automatisé.
Si tu es d'accord avec cette solution, je te propose de m'envoyer ton classeur pour que je mette ça en place. Sinon je te donne des bouts de codes et tu assembles tout ça toi-même.

@+
0
Roro-33 Messages postés 1 Date d'inscription samedi 4 avril 2015 Statut Membre Dernière intervention 4 avril 2015 > MD1990 Messages postés 6 Date d'inscription jeudi 2 avril 2015 Statut Membre Dernière intervention 6 avril 2015
4 avril 2015 à 16:33
Salut MD1990

Mon fichier est au bureau donc impossible pour moi d'y avoir accès avant mardi, j'ai donc recréé une version simplifié de chez moi.
Comme je ne savais pas comment te le faire parvenir j'ai créé un lien cjoint, j'espère que ça marchera ^^ : https://www.cjoint.com/c/EDeqLwFWYnX

J'espère que tu arriveras à le comprendre, merci de t'être penché sur mon cas.

Je ne sais pas si ça a une incidence mais j'utilise Excel 2010 au bureau et non pas 2007 comme la version de mon exemple.

Merci encore
0
MD1990 Messages postés 6 Date d'inscription jeudi 2 avril 2015 Statut Membre Dernière intervention 6 avril 2015 2
6 avril 2015 à 19:01
Hello,
Je veux bien la vraie version, si ca ne t'ennuie pas trop. Je t'ai envoye mon adresse mail perso par MP pour t'eviter de le mettre en ligne ouvert a tout le monde.
A+
0