[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

6 réponses

Armojax
Messages postés
1852
Date d'inscription
mercredi 19 janvier 2005
Statut
Membre
Dernière intervention
9 mars 2022
1 505
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
1852
Date d'inscription
mercredi 19 janvier 2005
Statut
Membre
Dernière intervention
9 mars 2022
1 505
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
1852
Date d'inscription
mercredi 19 janvier 2005
Statut
Membre
Dernière intervention
9 mars 2022
1 505
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