Excel VBA

Résolu
ivan34 Messages postés 2 Statut Membre -  
gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   -
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. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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. ivan34 Messages postés 2 Statut Membre
       
      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
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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. ivan34
       
      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. ivan34
       
      Re Bonjour,

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

      Merci encore
      ivan34
      0
    3. ivan34
       
      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. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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. ivan34
       
      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. ivan34
       
      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
  4. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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