Excel VBA

Résolu/Fermé
ivan34 Messages postés 2 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 10 décembre 2009 - 9 déc. 2009 à 06:55
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 12 déc. 2009 à 09:05
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
A voir également:

4 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 688
9 déc. 2009 à 09:22
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
ivan34 Messages postés 2 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 10 décembre 2009
10 déc. 2009 à 21:25
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 688
10 déc. 2009 à 23:20
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
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
Re Bonjour,

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

Merci encore
ivan34
0
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 688
11 déc. 2009 à 18:26
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
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
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 688
12 déc. 2009 à 09:05
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