Macro boucle if d'après fonction si
Résolu
katiaromu
-
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
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
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:
- Macro boucle if d'après fonction si
- Fonction si et - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Fonction miroir - Guide
5 réponses
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é!
désolé!
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
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
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
pouvez vous m'aider?
merci
Bonjour,
Si j'ai bien suivi ton raisonnement cette macro devrait aller:
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
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
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 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question