macro pour remplacer =recherchev ...

yoyo69

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

  • yoyo.xls
    32 KB · Affichages: 98
  • yoyo.xls
    32 KB · Affichages: 100
  • yoyo.xls
    32 KB · Affichages: 106
C

Compte Supprimé 979

Guest
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+
 

yoyo69

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

@
 
C

Compte Supprimé 979

Guest
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

  • Yoyo69 - DevisCatalogue.zip
    21.1 KB · Affichages: 81

yoyo69

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

Bebere

XLDnaute Barbatruc
Re : macro pour remplacer =recherchev ...

bonjour yoyo,bruno
un essai avec ado(sans ouvrir fichier catalogue)
les 2 fichiers dans le même dossier
à toi de voir pour la suite
à bientôt
 

Pièces jointes

  • ForumAout07.zip
    19.2 KB · Affichages: 71

yoyo69

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

@
 
C

Compte Supprimé 979

Guest
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+
 

yoyo69

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

@
 

Bebere

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

Discussions similaires

Réponses
3
Affichages
207
Réponses
26
Affichages
383
Réponses
10
Affichages
412

Statistiques des forums

Discussions
312 232
Messages
2 086 462
Membres
103 222
dernier inscrit
2BS