XL 2016 Réinitialiser des champs

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
 

Dudu2

XLDnaute Barbatruc
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
 

Laurence2626

XLDnaute Nouveau
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)"
 

Laurence2626

XLDnaute Nouveau
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
 

Dudu2

XLDnaute Barbatruc
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.
 

Laurence2626

XLDnaute Nouveau
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
 

Dudu2

XLDnaute Barbatruc
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
 

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 811
dernier inscrit
caroline29260