Convertir une formule Excel en code vba [Résolu]

Signaler
-
Messages postés
2
Date d'inscription
vendredi 11 septembre 2020
Statut
Membre
Dernière intervention
11 septembre 2020
-
Bonjour,

Plutôt novice en VBA , j'aimerai automatiser un fichier mais je bloque sur une partie.
J'ai une formule Excel (Matricielle)sur toute une colonne, que je voudrais convertir en code.

En C3
'=IFERROR(LEFT(IF(A3="","",IFERROR(INDEX($A3:$A$100,SMALL(IF($B2:$B$100=$B2,ROW($A3:$A$100)-(ROW()-1)),2)),"Inconnue")),12),"")
En C6
'=IFERROR(LEFT(IF(A6="","",IFERROR(INDEX($A6:$A$100,SMALL(IF($B5:$B$100=$B5,ROW($A6:$A$100)-(ROW()-1)),2)),"Inconnue")),12),"")
En C9
=IFERROR(LEFT(IF(A9="","",IFERROR(INDEX($A9:$A$100,SMALL(IF($B8:$B$100=$B8,ROW($A9:$A$100)-(ROW()-1)),2)),"Inconnue")),12),"")
En C12
'=IFERROR(LEFT(IF(A12="","",IFERROR(INDEX($A12:$A$100,SMALL(IF($B11:$B$100=$B11,ROW($A12:$A$100)-(ROW()-1)),2)),"Inconnue")),12),"")
,...


Dans la colonne "B" j’ai deux valeurs possible LM1_ ou LM_2
A partir de la 1er valeur de la colonne B, ici B3 = « LM_1 », j’aimerai recherche la 1er valeur suivante = à B3 (1er valeur = LM_1 se trouve en B9) et renvoyer en C3 la valeur de la cellule A9
A9 = 97066595. Je dois donc retrouver en A3 la valeur 97066595.
Ensuite passer à B6. Si B6 = LM_2, ke recherche la 1er valeur de la colonne B = LM_2, elle se trouve en B15, je renvoie en C6 la valeur de A15. A15 = 219738 donc C6 doit être = à A15

Et ainsi de suite.

B9 = LM_1 prochaine valeur = à LM_1 est en B12, valeur à renvoyer en C9 (275029) = A12(275029).
B12 = LM_1 prochaine valeur = à LM_1 est en B18, valeur à renvoyer en C12(318071) = A18(318071).
B15 = LM_2 prochaine valeur = à LM_2 est en B45, valeur à renvoyer en C15(5659) = A45(5659).

Et ainsi de suite, ...

Merci pour votre aide.

HM

3 réponses

Messages postés
14471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
4 mars 2021
807
bonjour, c'est chaque fois un peu plus simple et plus fiable à faire si on peut se baser sur un fichier exemple.
Messages postés
14471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
4 mars 2021
807
je propose ceci:
Private Sub LM()
Dim b As Range, bb As Range
Set b = ActiveSheet.[B3]
Do While b <> ""
    Set bb = b.Offset(3)
    Do While bb <> "" And bb <> b
        Set bb = bb.Offset(3)
    Loop
    If bb = b Then
        b.Offset(0, 1) = bb.Offset(0, -1)
    End If
    Set b = b.Offset(3)
Loop
End Sub
Messages postés
2
Date d'inscription
vendredi 11 septembre 2020
Statut
Membre
Dernière intervention
11 septembre 2020

Bonjour,

je suis nouveau sur le site. Je ne trouve pas le moyen d’insérer le fichier. Peut-être pourriez-vous m'aider.

Je viens de tester le code. Il ne se passe rien.

Merci

hm
Messages postés
14471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
4 mars 2021
807
pour partager un fichier, il faut le publier sur internet (cjoint.com, google drive, ...), et partager le lien ici.
Messages postés
2
Date d'inscription
vendredi 11 septembre 2020
Statut
Membre
Dernière intervention
11 septembre 2020

J'ai trouvé pourquoi votre code ne fonctionne pas avec mon fichier.
En fait il est parfait.
Le pb vient du fait que j'utilise des cellules fusionnées colonne B.
Apres modif du format, tout fonctionne parfaitement.

Merci pour votre aide.

HM