[VBA] Prob variable dans fonction XL par VBA

Fermé
don lon - 4 juil. 2006 à 14:33
 HERBIN - 19 juil. 2008 à 14:07
Bonjour a tous,

alors voila mon probleme, j'ai effectue une grosse macro qui teste une plage de cellule a travers une autre afin de renvoyer des valeurs.

Comme les deux plages font 4000 lignes ca prend 1h30 a faire !!!!
j'ai donc change et dit a ma macro de copier une formule VLOOKUP dans les cases ou je souhaite obtenir mon resultat !! Ca prend donc 20sec mais le pb est que du coup je ne peux plus changer mon nom d'onglet Bdd:

Ma formule actuelle


bout7 = Range("a65536").End(xlUp).Row
For u = 2 To bout7

Range("b" & u).Select
ActiveCell.FormulaR1C1 = _
bout7 = Range("a65536").End(xlUp).Row
For u = 2 To bout7


Je souhaiterais qu'a la place de Bdd! on puisse mettre le nom de l'onglet en variable genre

onglet= sheet1.name

"=IF(ISERROR(VLOOKUP(RC[4],onglet! & "R1C1:R4749C11",8,0)),"""",VLOOKUP(RC[4],onglet!& "R1C1:R4749C11",8,0))"

mais ca ne marche pas !!!!

merci de votre aide
A voir également:

6 réponses

Armojax Messages postés 1860 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024 1 528
4 juil. 2006 à 15:10
Salut,

Avec un petit exemple, ça serait plus compréhensible.
Peux-tu mettre un échantillon ici :
https://www.cjoint.com/
0
lordorian Messages postés 2 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 juillet 2006
6 juil. 2006 à 12:48
Je ne peux pas, le fichier est un fichier confidentiel...

en résumé je voudrais savoir comment définir une variable dans VBA lorsqu'on écrit une formule excel dans une cellule:

ex

comment dire d'ecrire dans la cellule A1 la formule suivante:

=sum('bdd!'A3:A4)
mais avec le nom de l'onglet bdd en variable pour que je puisse changer le nom de l'onglet par la suite

Quand je fait:

onglet= sheet2.name

je peux pas inserer onglet dans =sum(onglet & (!A3:A4))
il ne reconnait pas ca comme une variable
0
Kobaya Messages postés 282 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 10 janvier 2008 214
6 juil. 2006 à 14:59
hello,

il faut écrire :

Range("A1").Formula = "=Sum(onglet & "!A3:A4")

il s'agit de concaténer le nom de la feuille contenu dans la variable onglet avec la référence de cellules "!A3:A4", qui, si je ne me trompe pas, est ce qu'on appelle une constante littérale.

0
Armojax Messages postés 1860 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024 1 528
6 juil. 2006 à 14:37
Et au lieu de copier un RECHERCHEV (VLOOKUP) dans les cellules par VBA, tu peux exécuter directement le VLOOKUP dans VBA.
C'est plus simple, non ?

xx = Application.WorkSheetFunction.VlookUp(etc.)
0
lordorian Messages postés 2 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 juillet 2006
6 juil. 2006 à 14:50
euh est ce que tu peux m'en dire plus stp? car je ne savais pas du tt que l'on pouvait faire ca ??

quelle serait la commande pour mon exemple simple de sum ???

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Armojax Messages postés 1860 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024 1 528
6 juil. 2006 à 15:09
Un petit exemple :
Sub Total()
  Dim Somme As Double
  Dim Feuille As String
  Feuille = "Feuil1"  ' ou bien...   Feuille = ActiveSheet.Name  ou bien... etc.
  Somme = Application.WorksheetFunction.Sum(Sheets(Feuille).Range("A1:A5"))
End Sub
0
Bonjour
je souhaiterai créer une facture sous excel vba, un userform avec une liste déroulante qui contiendra la référence du produit, en cliquant sur cette liste apparait la désignation et le prix unitaire et le total sur un textbox.
mon problème j'ai du mal à utiliser la fonction VLookup, ça ne marche pas :
voir code excel vba

réf= Produit combobox
désignation = libellé textbox
prix unitaire = Prix textbox
Quantité = Qte textbox saisir la quantité
Montant HT= Total textbox

Private Sub UserForm_Initialize()
Me("produit" & i).List = (Range([J2], [J2].End(xlDown))) ' ma base de données J2:L18
End Sub

Sub ChoixProduit()

Me("libellé") = Application.VLookup(Me("Produit"), [BDProduit], 2, False)
Me("Prix") = Application.VLookup(Me("Produit"), [BDProduit], 3, False)
Calcul
End Sub

Sub Calcul()
If Me("Prix") <> "" And Me("Qte") <> "" Then
Me("Total") = CDbl(Me("Prix")) * CDbl(Me("Qte"))
End If
End Sub
bien cordialement
herbin
0

Discussions similaires