Excel VBA

Résolu
Bonjour,

Comment puis je mettre cette fonction en code VBA

=INDEX(Feuil1!A:A;EQUIV(GAUCHE(B2;5);Feuil1!B:B;0))

Car j'ai 10000 lignes et 35 colonnes à traiter.

Par avance merci. Cordialement
Configuration: Windows XP
Firefox 3.6

4 réponses

  1. Contributeur
    bonjour

    mes colonnes C2 à AI8000 sont toutes différentes

    Avec ce que tu met tu écrases ces colonnes et donc cela ne peut fonctionner.

    Essaies de nous mettre un exemple de classeur sans données privées sur http://www.cijoint.fr/ pour que l'on comprenne le but recherché puis tu nous donnes ici le lien généré.
    0
    1. Contributeur
      bonjour

      As-tu essayé comme ceci :
      Dim lig As Long
      Dim col As Long
      For lig = 2 To 8000
          For col = 3 To 40
              Cells(lig, col).FormulaLocal = "=INDEX(Feuil1!A:A;EQUIV(GAUCHE(B" & lig & ";5);Feuil1!B:B;0))"
          Next col
      Next lig

      Comme tu n'as pas expliqué le but c'est difficile de trouver le code.
      0
      1. Bonjour,
        Oui j'ai essayé

        En fait le but c'est de pouvoir utiliser cette fonction, ou peut être sous forme vba, afin d'avoir le même résultat.

        Ce que je veux c'est pouvoir recopier cette fonction de la ligne C2 à la colonne AI8000, en tenant compte de ma variable qui se trouve en colonne B (en fait celle ci est bonne rien ne change).

        Merci pour tes conseils.
        ivan34
        0
      2. Bonjour,

        Pour compléter ma dernière réponse mes colonnes C2 à AI8000 sont toutes différentes, et c'est d'ailleurs pour cette raison, que la solution que j'ai essayé avec cells(lig, col) ne fonctionne pas.

        ivan34
        0
    2. Contributeur
      bonjour

      Dans ta formule :
      =INDEX(Feuil1!A:A;EQUIV(GAUCHE(B2;5);Feuil1!B:B;0))

      j'ai fait évoluer la ligne (2) que veux-tu faire évoluer :
      - la colonne B ?
      - Cells(lig, "C").FormulaLocal la colonne où se situe la formule ?
      0
      1. Bonjour,
        En fait ce que je fais évoluer c'est
        Cells(lig,"C").formulalocal
        en fait j'ajoute mes 40 colonnes
        Cells(lig,"D").formulalocal
        Cells(lig,"E").formulalocal
        Cells(lig,"F").formulalocal...

        Mon souci c'était de savoir s'il y avait un moyen d'éviter cette répétition.
        D'avoir comme une boucle à la place de "C"

        du style

        for lig =2 to 8000
        for col = 3 to 40
        Cells(lig,col).formulalocal="=INDEX(Feuil1!A:A;EQUIV(GAUCHE(B2;5);Feuil1!B:B;0))"
        next col
        next lig

        Merci pour ton aide
        ivan34
        0
      2. Re Bonjour,

        Merci de ton aide, mais je pense avoir trouver la solution je viens de te l'envoyer.

        Merci encore
        ivan34
        0
      3. Bonjour,

        Ce que je veux faire évoluer c'est Cells(lig, "C") la colonne C jusqu'à la colonne AI

        Merci par avance de ta réponse.
        ivan34
        0
    3. Contributeur
      bonjour

      Comme je suppose que tu veux faire évoluer B2 tu peux mettre :
      Dim lig As Long
      For lig = 2 To 10
          Cells(lig, "C").FormulaLocal = "=INDEX(Feuil1!A:A;EQUIV(GAUCHE(B" & lig & ";5);Feuil1!B:B;0))"
      Next lig

      Tu remplaces le "C" par la colonne où tu mets ta formule.
      0
      1. Bonjour,
        Merci pour ta réponse si prompt gbinforme,
        Oui effectivement cela fonctionne mais par contre je voudrais pouvoir avoir un code vba qui ressemble a cette fonction car j'ai 8000 lignes et 40 colonnes
        Donc comment puis je faire, afin d'éviter d'écrire 40 lignes.

        Par avance merci de ta réponse.
        ivan34
        0