Macro boucle if d'après fonction si [Résolu/Fermé]

Signaler
-
Messages postés
23485
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 septembre 2020
-
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

5 réponses

Messages postés
112
Date d'inscription
dimanche 7 octobre 2007
Statut
Membre
Dernière intervention
14 mars 2008
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é!
Messages postés
23485
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 septembre 2020
6 349
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
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
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
Messages postés
23485
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 septembre 2020
6 349
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
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
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
ok, j'ai fait des macros pour les autres colonnes plus une macro qui me lance toutes les macros et cela fonctionne. Merci
Messages postés
23485
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 septembre 2020
6 349
Parfait,
n'oublie pas de mettre en résolu si tout te parait ok. Merci
Bonne continuation
eric