Macro boucle if d'après fonction si

Résolu
katiaromu -  
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

voici les fonctions que j'ai dans ma feuille excel

en B3 : =SI($B$1=spancm19022008!$B1;spancm19022008!$C1;"")
en B4 : =SI($B$1=spancm19022008!$B4;spancm19022008!$C4;"")
En B5 : =SI($B$1=spancm19022008!$B7;spancm19022008!$C7;"")
etc...

j'aimerais créer une macro qui me fasse cette manipulation de fonction automatiaquement... est ce possible? je le pense avec des boucles et des if then mais je n'y arrive pas du tout!!!

Merci de votre aide

Romuald
A voir également:

5 réponses

killeur Messages postés 112 Statut Membre 20
 
oui c'est possible, et c'est meme simple, sauf que la, j'ai pas le temps, si ya pas de réponses je le ferais un peu plutart!!

désolé!
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonjour,

moi non plus je n'ai pas bcp le temps mais à mon avis tu peux faire sans macro.
Si tu inscris =LIGNE()*3-8 en ligne 3 et que tu recopie vers le bas tu vois que tu généres les n° de ligne qui t'interessent : 1, 4, 7, 10...
Tu n'as plus qu'à fabriquer les références que tu veux avec indirect()
Ex:
=SI($B$1=spancm19022008!$B1;spancm19022008!$C1;"")
deviendrait :
=SI($B$1=INDIRECT("spancm19022008!$B" & (LIGNE()*3-8);INDIRECT("spancm19022008!$C" & (LIGNE()*3-8);"")

Je te laisse le soin de contrôler et tester

eric
0
katiaromu
 
salut, ok ça fonctionne, mais comme j'ai beaucoup de lignes à remplir (et même de colonne car il faut que je répète ça sur 12 colonnes) j'aurais aimé une macro, mais ça m'aide déjà beaucoup. Merci
0
katiaromu
 
j'ai essayé la méthode de eriiic, ca fonctionne bien jusqu'a 100 lignes mais apres ca marche plus et j'ai plus de 1500 lignes à remplir
pouvez vous m'aider?

merci
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonjour,

Si j'ai bien suivi ton raisonnement cette macro devrait aller:
Sub recup()
    Dim cel As Range
    Dim l As Long
    For Each cel In Selection
        l = cel.Row
        If Range("$B$1") = Worksheets("spancm19022008").Range("$B" & (l * 3 - 8)).Value Then
            cel.Value = Worksheets("spancm19022008").Range("$C" & (l * 3 - 8)).Value
        Else
            cel.Value = ""
        End If
    Next cel
End Sub


Sélectionne la zone où tu désires avoir les résultats et lance la macro
Mais tu parles dans ton dernier message de devoir le faire sur plusieurs colonnes, cette macro ramenra toujours la valeur de la colonne C après le test fait en colonne B vu que tu n'as pas donné d'autre indicatiion...

eric
0
katiaromu
 
ok, merci je teste ça lundi et je dis quoi , en ce qui concerne les autres colonnes, pas de probleme j'arriverai à adapter la macro pour le reste, enfin j'espère.
merci
0
katiaromu
 
bonjour,
ok ca fonctionne pour le remplissage de la colonne B d'après la colonne C de l'autre page, même si c'est un peu fastidieux de sélectionner la colonne pour le remplissage
les autres colonnes à remplir sont ainsi
1. copie de C d'après Test de la colonne B (ce qui est deja fait avec la macro ci-dessus)
2. copie de D d'après test de la colonne C
3. copie de C d'apres test de la colonne D
4. copie de D d'apres test de la colonne E
5. copie de C d'apres test de la colonne F
6. copie de D d'apres test de la colonne G
7. copie de C d'apres test de la colonne H
8. copie de D d'apres test de la colonne I
9. copie de C d'apres test de la colonne J
10. copie de D d'apres test de la colonne K
11. copie de C d'apres test de la colonne L
12. copie de D d'apres test de la colonne M

Voila
0
katiaromu
 
ok, j'ai fait des macros pour les autres colonnes plus une macro qui me lance toutes les macros et cela fonctionne. Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Parfait,
n'oublie pas de mettre en résolu si tout te parait ok. Merci
Bonne continuation
eric
0