[VBA] Prob variable dans fonction XL par VBA

don lon -  
 HERBIN -
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

  1. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
     
    Salut,

    Avec un petit exemple, ça serait plus compréhensible.
    Peux-tu mettre un échantillon ici :
    https://www.cjoint.com/
    0
  2. lordorian Messages postés 2 Statut Membre
     
    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
    1. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
       
      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
  3. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
     
    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
  4. lordorian Messages postés 2 Statut Membre
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
     
    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
  7. HERBIN
     
    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