XL 2016 Réinitialiser des champs

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Laurence2626

XLDnaute Nouveau
Bonjour à tous

J'ai un fichier excel qui à l'ouverture ouvre un userform. Le client remplit sur cet user form un code qui vient se ranger en B20.
Quand le code est rempli grâce à la fonction basique de recherche v cela va renseigner pleins d'autres champs sur la feuille excel et des calculs se font automatiquement.
Jusque la tout va bien ! 🙂
Si le client ne modifie rien c'est ok.
En revanche je lui laisse la possibilité grâce a un bouton de modifier deux champs initialement rempli par la fonction recherche V si entre temps il y a eu une modification entre ma base de donnée et la situation actuelle. si il clique sur ce bouton MODIFIER LES CHAMPS ouverture d'un nouvel userform avec les deux données à modifier que je viens intégrer dans ma feuille de calcul.
La le problème c'est donc que je perds mes recherches v puisque je viens écraser les données de recherche V avec la MACRO MODIFIER LES CHAMPS.
Le client fait plusieurs simulations à la suite et peut donc taper un autre code mais comme je n'ai plus mes recherches V s'il a cliqué sur la macro précédemment il n'a plus la bonne valeur dans les deux champs en question correspondant a la base de donnée
Y a t'il un moyen de réinitialiser les champs avec ma recherche v si le client tape un nouveau code?
J'espère ne pas avoir été trop confuse dans ma demande et je vous remercie par avance pour votre aide

Laurence
 
Bonjour,
Dans une cellule, s'il y a quelque chose c'est soit une formule ou (exclusif) une constante.

Y a t'il un moyen de réinitialiser les champs avec ma recherche v si le client tape un nouveau code?
Je ne comprends pas trop cette affaire de code, mais il est toujours possible de placer par VBA une formule dans une cellule, soit en format local français (Cellule.FormulaLocal = "=RECHERCHEV...") soit en format anglais (Cellule.Formula = "= VLOOKUP...).

Ou si tu l'as mémorisée avant de l'écraser par une constante:
VB:
Dim Formule as string
Dim Cellule as Range
.../...
Formule = Cellule.Formula
.../...
Cellule.Value = Constante_Saisie
.../...
Cellule.Formula = Formule
 
Ok a l'aide
Je mets ce code pour faire ma recherche v et j'ai a chaque fois une erreur type exécution 9 et je ne sais pas pourquoi
A priori c'est le set ma plage qui coince

Dim MaValeur As Variant
Dim MaPlage As Range
Dim MaColonne As Single
Dim ValeurProche As Boolean

MaValeur = "B20"
Set MaPlage = Workbooks("BORDEREAU SEPTEMBRE 2020 INTERNET V3.xls").Sheets("BDD").Range("A:U")
MaColonne = 4
ValeurProche = False

Range("I37").FormulaLocal = "=RECHERCHEV(MaValeur;MaPlage!MaColonne;ValeurProche)"
 
Dudu2

Si je te comprends bien je peux mémoriser les valeurs d'une cellule à l'ouverture du fichier et lui demander de les ressortir quand je veux?
Par contre question code je vais pas y arriver mais l'idee me plait ! 😉
Je pense que refaire une recherche v pour reinitialiser est peut etre plus simple
 
Laurence,
Dans tes cellules, tu as soit une formule RECHERCHEV, soit une constante / valeur.
La formule peut être issue soit d'une saisie manuelle, soit de la valorisation par du code VBA.
La constante / valeur peut être issue soit d'une saisie manuelle, soit de la valorisation par du code VBA.
Donc tout est possible.

Si au départ tu as des formules qui sont destinées à être écrasées par des valeurs, sauf justification exceptionnelle, ce n'est pas très logique.

Par VBA tu peux à tout moment (ouverture du classeur, durant le traitemant, fermeture du classeur)
- Copier une plage de cellules (voire la feuille entière) dans une variable (formules et valeurs)
- Utiliser cette variable pour valoriser une plage de cellules (voire la feuille entière).
- Placer des valeurs ou des formules dans des cellules
- Faire une rechercher avec un Application.VlookUp ou avec tout algorithme adapté à ce que tu cherches à faire.

Mais bon, il faut d'abord un fichier à joindre ici et probablement des explications complémentaires sur ce que tu cherches à réaliser.
 
Merci Dudu
Je cherchais a faire compliqué alors que tu m'as donné une bonne idée j'ai copié les cellules en question dans un endroit caché et quand j'utilise ma macro même si entre temps l'utilisateur les a modifies je les réinitialise avec les valeurs des cellules cachés.
Ça fonctionne et c'est simple
merci encore
 
Ok. Je te donne une autre option pour les stocker en mémoire:
VB:
    Dim TabPlage() As Variant
    
    'Sauvegarde des constantes et formules
    TabPlage = ActiveSheet.Range("D10:G30").Formula
    .../...
    'Restoration des constantes et formules
    ActiveSheet.Range("D10:G30").Formula = TabPlage
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
347
Réponses
10
Affichages
281
Retour