macro pour remplacer =recherchev ...

  • Initiateur de la discussion Initiateur de la discussion yoyo69
  • Date de début Date de début

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 !

Y

yoyo69

Guest
Bonjour,

Je rame desesperemment sur un problème dont j'ai joint un exemple pour être plus clair. Je cherche une macro qui m'evite de passer par la formule "=recherchev...", je ne veux plus de la demande de mise a jour lors de l'ouverture d'un fichier qui recherche des valeurs provenant d'autres fichiers. C'est une source à erreur pour mes utilisateurs.

L'exemple se présente sur une feuille, alors que mon désir est d'avoir un fichier nommé par exemple catalogue.xls et un autre devis.xls.

Est ce que je suis obligé de faire une macro qui copie/colle les infos de catalogue.xls dans le fichier devis.xls pour avoir une liste a inserer dans une combobox et d'en traiter les infos ?
Pour infos il y aura qu'un article par feuille.

Merci à vous,
Cordialement
 

Pièces jointes

Re : macro pour remplacer =recherchev ...

Salut Yoyo69,

Tu as une possibilité, c'est lors de l'ouverture de ton fichier "Devis", ouvrir également le fichier "Catalogue".

Avec ton fichier ouvert, tu peux créer ton combobox.

A+
 
Re : macro pour remplacer =recherchev ...

merci bruno,

Ok pour ouvrir le fichier catalogue aussi, mais comment indiquer à la combobox (dans devis.xls) que ma liste provient de catalogue.xls. Dans la RowSource peut on mettre =d:\*******feuil1!a1:a3
Et selon mon exemple joint, si je modifie des infos de ma fiche article (infos provenant du catalogue), je ne veux pas que ces infos soit modifié dans mon fichier catalgue mais uniquement sur ce devis et de plus qu'il garde en memoire ces infos modifiés.

@
 
Re : macro pour remplacer =recherchev ...

Re Yoyo69,

Le VBA est un outils puissant, tu définit d'abord les objets sur lesquels tu veux travailler, ensuite tu les utilises.

Tu trouveras ci-joint deux fichiers : Devis.xls et Catalogue.xls (à mettre dans le même répertoire)

1) Ouvre le fichier Devis (le fichier catalogue sera ouvert automatiquement)
2) Clique sur le bouton article (tous les articles du catalogue seront présent dans ton USF

A toi la suite ...😉
 

Pièces jointes

Re : macro pour remplacer =recherchev ...

Re BrunoM45,

J'ai 2 questions :

Je voudrais que dans la userform le total de toutes les textbox, se calcule dans la userform du genre,

Me.TextBoxTOTAL.Value = Me.TextBoxT1.Value + Me.TextBoxT2.Value + Me.TextBoxT3.Value + Me.TextBoxT4.Value + Me.TextBoxT5.Value

le code ne doit pas être juste parce qu'il me fait un calcul faut.

Seconde question, si je change un prix dans la userform (provenant du catalogue) je voudrait que le calcul se modifie automatiquement, est ce possible sans initializer la user

Merci, @
 
Re : macro pour remplacer =recherchev ...

re bebere,

merci aussi pour tes infos, une question, tu recuperes les infos dans catalogue, ok mais t'en fait quoi ? tu les colles dans yoyo ou tu les garde en memoire ?


@
 
Re : macro pour remplacer =recherchev ...

ok merci bebere.


> J'ai completé ma userform avec un recalcul automatique "si changement de valeur dans TextBoxP1". Le problème il me donne le resultat que si les valeur sont entiere soit 0.5 X 0.4 = 0 et 1 X 1 = 1

Private Sub TextBoxP1_Change()
calculsomme
End Sub

Sub calculsomme()
TextBoxT1 = Val(TextBoxQ1) * Val(TextBoxP1)
TextBoxT1 = Format(TextBoxT1.Value, "#,##0.00")
End Sub


Pourquoi ?

@
 
Re : macro pour remplacer =recherchev ...

Salut Yoyo69,

Pour faire le calcul, il faut remplacer l'éventuelle virgule par un point

Code:
Private Sub TextBoxQt_AfterUpdate()
  Me.TextBoxMt1.Value = Val(Replace(Me.TextBoxQt, ",", ".")) * Val(Replace(Me.TextBoxPU1, ",", "."))
End Sub

Code:
Private Sub TextBoxMO_AfterUpdate()
  Me.TextBoxMt2.Value = Val(Replace(Me.TextBoxMO, ",", ".")) * Val(Replace(Me.TextBoxPU2, ",", "."))
End Sub

Ca devrait mieux fonctionner 😉
a+
 
Re : macro pour remplacer =recherchev ...

encore merci bruno, j'essayerais cela demain
j'avais pour l'instant remplacer val par cdtv (c'est pas tout a fait ça)
mais mon problème maintenant c'etait le point du clavier numerique qu'il n'acceptait pas mais seulement la virgule.

@
 
Re : macro pour remplacer =recherchev ...

bonjour Yoyo,Bruno

quelques exemples pour la saisie de valeurs numériques dans un TextBox.
avec . tu employes val
avec , cdbl(tu as un exemple dans l'userform)

'remplace le point par une virgule

Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 46 Then KeyAscii = 44
End Sub

'avec la virgule non valide (entier)
Private Sub textBox1_Change()
On Error Resume Next

If Not IsNumeric(Right(TextBox1, 1)) Then
MsgBox "Le caractere saisi n'est pas valide"
TextBox1 = Left(TextBox1, Len(TextBox1) - 1)
End If
End Sub

'avec la virgule valide(décimale)
Private Sub textBox1_Change()
On Error Resume Next

If Not IsNumeric(Right(TextBox1, 1)) And Right(TextBox1, 1) <> "," Then
MsgBox "Le caractere saisi n'est pas valide"
TextBox1 = Left(TextBox1, Len(TextBox1) - 1)
End If
End Sub

'Auteur Didier MdF
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Is < 48, Is > 57
KeyAscii = 0
End Select
End Sub

à bientôt
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour