BoucleVBA
Résolu/Fermé
cindy001
Messages postés
102
Date d'inscription
lundi 20 décembre 2010
Statut
Membre
Dernière intervention
17 août 2011
-
3 janv. 2011 à 18:56
cindy001 Messages postés 102 Date d'inscription lundi 20 décembre 2010 Statut Membre Dernière intervention 17 août 2011 - 5 janv. 2011 à 12:33
cindy001 Messages postés 102 Date d'inscription lundi 20 décembre 2010 Statut Membre Dernière intervention 17 août 2011 - 5 janv. 2011 à 12:33
9 réponses
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
3 janv. 2011 à 19:12
3 janv. 2011 à 19:12
bonsoir,
a première vu tes boucles sont mal controlées, la boucle i est declaree en 1°, donc, next j doit etre avant next i
il y a peut etre d'autres errreurs
bonne suite
a première vu tes boucles sont mal controlées, la boucle i est declaree en 1°, donc, next j doit etre avant next i
il y a peut etre d'autres errreurs
bonne suite
Iama
Messages postés
319
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
27 mars 2020
14
3 janv. 2011 à 19:33
3 janv. 2011 à 19:33
Bonsoir cindy001
ccm81 aq réglé ton 1er probléme.
Le suivant je pense que Range("Ai") ne va pas être compris,
si c'est le cas essaie cela :
b = "A" & i
Range(B).Select
Iama
ccm81 aq réglé ton 1er probléme.
Le suivant je pense que Range("Ai") ne va pas être compris,
si c'est le cas essaie cela :
b = "A" & i
Range(B).Select
Iama
cindy001
Messages postés
102
Date d'inscription
lundi 20 décembre 2010
Statut
Membre
Dernière intervention
17 août 2011
2
3 janv. 2011 à 20:27
3 janv. 2011 à 20:27
Merci pour vos rapides réponses.
J'ai pase xcel chez moi sur mon pc.
Jpourrai essayer ca demain à la fac.
En tout cas merci beaucoup de me lire.
J'ai pase xcel chez moi sur mon pc.
Jpourrai essayer ca demain à la fac.
En tout cas merci beaucoup de me lire.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
3 janv. 2011 à 21:35
3 janv. 2011 à 21:35
Bonjour,
Et un exposer en français serait beaucoup apprécier, contrairement à ton "Charabia"
A+
Et un exposer en français serait beaucoup apprécier, contrairement à ton "Charabia"
A+
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
4 janv. 2011 à 09:42
4 janv. 2011 à 09:42
re
Iama a réglé le 2° pb, tu as bien sûr la même chose avec
Range("Ai:Bi+1").Select
qui doit etre remplacé par
Range("A" & i & ":B" & (i+1)).Select
Quelques précisions
La reference à une cellule "A3" par exemple est du type texte (chaine de caracteres) or lorsque tu écris "Ai" , i est vu comme une chaine (la lettre i ) et non une valeur numérique (le numéro i de la ligne) .
Il faut donc
1. transformer la valeur de la variable entière i en chaine
2. concaténer le résultat à la chaine "A"
Ce qui va donner au niveau du code "A" & i (quand i = 3, ça fera "A3")
RQ. L'étape 1 est inutile en VBA, quand VBA rencontre & i, il "comprend" que i doit etre transformé en chaine.
RQ. Même opération pour la construction d'une plage "variable"
Une question
Je ne vois pas très bien où tu veux en venir avec cette partie de code
Range("Ai:Bi+1").Select
Selection.Replace What:="j", Replacement:="j+1", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
bonne suite
Iama a réglé le 2° pb, tu as bien sûr la même chose avec
Range("Ai:Bi+1").Select
qui doit etre remplacé par
Range("A" & i & ":B" & (i+1)).Select
Quelques précisions
La reference à une cellule "A3" par exemple est du type texte (chaine de caracteres) or lorsque tu écris "Ai" , i est vu comme une chaine (la lettre i ) et non une valeur numérique (le numéro i de la ligne) .
Il faut donc
1. transformer la valeur de la variable entière i en chaine
2. concaténer le résultat à la chaine "A"
Ce qui va donner au niveau du code "A" & i (quand i = 3, ça fera "A3")
RQ. L'étape 1 est inutile en VBA, quand VBA rencontre & i, il "comprend" que i doit etre transformé en chaine.
RQ. Même opération pour la construction d'une plage "variable"
Une question
Je ne vois pas très bien où tu veux en venir avec cette partie de code
Range("Ai:Bi+1").Select
Selection.Replace What:="j", Replacement:="j+1", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
bonne suite
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
cindy001
Messages postés
102
Date d'inscription
lundi 20 décembre 2010
Statut
Membre
Dernière intervention
17 août 2011
2
4 janv. 2011 à 10:33
4 janv. 2011 à 10:33
Tu as raison lermite 222 c peut etre plus simple avec le fichier:
http://www.cijoint.fr/cjlink.php?file=cj201101/cijZPkHBw9.xls
Donc voila c cette opération que je veux répéter en A2:B4 on utilise les lignes 20 des autres feuilles et je veux faire une boucle pour aller jusqu'à 619
donc faire un copier coller (non pas en bvaleur car je veux garder les formules) de A2:B4 2 lignes plus bas à chaque fois
j'avou que c'est du charabia comme ca mais avec le fichier cplus facile à comprendre
avec "A"&i à la place de Ai ca ne marche pas non plus on me met errur de syntaxe c'est peut etre plus facile avec cells jvais essayer
http://www.cijoint.fr/cjlink.php?file=cj201101/cijZPkHBw9.xls
Donc voila c cette opération que je veux répéter en A2:B4 on utilise les lignes 20 des autres feuilles et je veux faire une boucle pour aller jusqu'à 619
donc faire un copier coller (non pas en bvaleur car je veux garder les formules) de A2:B4 2 lignes plus bas à chaque fois
j'avou que c'est du charabia comme ca mais avec le fichier cplus facile à comprendre
avec "A"&i à la place de Ai ca ne marche pas non plus on me met errur de syntaxe c'est peut etre plus facile avec cells jvais essayer
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
Modifié par ccm81 le 4/01/2011 à 15:53
Modifié par ccm81 le 4/01/2011 à 15:53
re
si, "A" & i fonctionne
pour que tu y voies plus clair, j'ai séparé le code en deux parties
- la partie recopie qui fonctionne bien (tu mettras à jour les valeurs de imax et jmax)
- la partie qui s'occupe de la modification des cellules, mais là, je ne comprends toujours pas ce que tu veux faire.
il faudrait que tu me dises ce que tu attends exactement (valeur? formule? laquelle)dans chaque cellule de la plage A4:B5 (après recopie)
RQ. ne vaudrait il pas mieux placer un bouton dans la feuille pour executer ta macro?
bon courage
si, "A" & i fonctionne
pour que tu y voies plus clair, j'ai séparé le code en deux parties
- la partie recopie qui fonctionne bien (tu mettras à jour les valeurs de imax et jmax)
- la partie qui s'occupe de la modification des cellules, mais là, je ne comprends toujours pas ce que tu veux faire.
il faudrait que tu me dises ce que tu attends exactement (valeur? formule? laquelle)dans chaque cellule de la plage A4:B5 (après recopie)
Sub TimeSeries() ' ' Macro1 Macro ' Macro enregistrée le 03/01/2011 par IXIS ' Const imax = 22 Const jmax = 40 For i = 4 To imax Step 2 Range("A2:B3").Select Selection.Copy Range("A" & i).Select ActiveSheet.Paste Next i For i = 4 To imax Step 2 For j = 20 To jmax Step 1 Range("A" & i & ":B" & i + 1).Select Selection.Replace What:="j", Replacement:="j+1", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Next j Next i End Sub
RQ. ne vaudrait il pas mieux placer un bouton dans la feuille pour executer ta macro?
bon courage
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
4 janv. 2011 à 16:46
4 janv. 2011 à 16:46
re
ça murit !!!
si j'ai compris, tu veux simplement recopier les trois formules de la plage A2:B3 et changer dans ces formules la référence à la ligne 20 par 21, puis 22 etc..
pourquoi ne pas faire plus simple
voila une macro qui devrait (peut etre) convenir
ça murit !!!
si j'ai compris, tu veux simplement recopier les trois formules de la plage A2:B3 et changer dans ces formules la référence à la ligne 20 par 21, puis 22 etc..
pourquoi ne pas faire plus simple
voila une macro qui devrait (peut etre) convenir
Private Sub CommandButton2_Click() Const imax = 22 Dim lig As Long Dim f1 As String, f2 As String, f3 As String lig = 21 For i = 4 To imax Step 2 f1 = "=product('Coef Mul Titre Large Ret1m'!$DC$" & lig & ":$FJ$" & lig & ")-1" f2 = "=Feuil1!$DB$" & lig f3 = "=product('Coef Mul Titre Large Ret1m'!$AU$" & lig & ":$DC$" & lig & ")-1" Range("A" & i).Formula = f1 Range("B" & i).Formula = f2 Range("A" & (i + 1)).Formula = f3 lig = lig + 1 Next i End Sub
cindy001
Messages postés
102
Date d'inscription
lundi 20 décembre 2010
Statut
Membre
Dernière intervention
17 août 2011
2
4 janv. 2011 à 16:55
4 janv. 2011 à 16:55
dans la cellule A2 on a cette formule(dans le fichier que j'ai mis sur cijoint.fr, adresse ci-dessus):=+PRODUIT('Coef Mul Titre Large Ret1m'!$DC$20:$FJ$20)-1
dans la cellule B2:=Feuil1!$DB$20
dans A3:=+PRODUIT('Coef Mul Titre Large Ret1m'!$AU$20:$DC$20)-1
et dans B3:=Feuil1!$AT$20
dans A4 je veux:=+PRODUIT('Coef Mul Titre Large Ret1m'!$DC$21:$FJ$21)-1 donc exactement la meme formule que dans A2 avec 21 au lieu de 20
dans B4 je veux:=Feuil1!$DB$21 idem que B2 avec 21 au lieu de 20
dans A5 je veux:=+PRODUIT('Coef Mul Titre Large Ret1m'!$AU$21:$DC$21)-1 idem que A3 avec 21 au lieu de 20
dans la formule
et dans B5:=Feuil1!$AT$21 idem que B3 avec 21 à la place de 20
puis je veux faire pareil avec 22 (dans les formules) au lieu de 20 dans A6 B6 A7 B7 et ainsi de suite jusqu'à 619(c'est ca le j que j'ai dans ma macro, 619 car dans Feuill1 on a nos chifrres de la ligne 20 à 619, et c'est ces chiffres qu'on utilise dans les formules.) au lieu de 20 dans les formules
dans la cellule B2:=Feuil1!$DB$20
dans A3:=+PRODUIT('Coef Mul Titre Large Ret1m'!$AU$20:$DC$20)-1
et dans B3:=Feuil1!$AT$20
dans A4 je veux:=+PRODUIT('Coef Mul Titre Large Ret1m'!$DC$21:$FJ$21)-1 donc exactement la meme formule que dans A2 avec 21 au lieu de 20
dans B4 je veux:=Feuil1!$DB$21 idem que B2 avec 21 au lieu de 20
dans A5 je veux:=+PRODUIT('Coef Mul Titre Large Ret1m'!$AU$21:$DC$21)-1 idem que A3 avec 21 au lieu de 20
dans la formule
et dans B5:=Feuil1!$AT$21 idem que B3 avec 21 à la place de 20
puis je veux faire pareil avec 22 (dans les formules) au lieu de 20 dans A6 B6 A7 B7 et ainsi de suite jusqu'à 619(c'est ca le j que j'ai dans ma macro, 619 car dans Feuill1 on a nos chifrres de la ligne 20 à 619, et c'est ces chiffres qu'on utilise dans les formules.) au lieu de 20 dans les formules
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
4 janv. 2011 à 17:03
4 janv. 2011 à 17:03
re
dans mon dernier post j'ai zappé B5, B7 etc ..
bonne suite
dans mon dernier post j'ai zappé B5, B7 etc ..
Private Sub CommandButton2_Click() Const imax = 22 Const jmax = 40 Dim lig As Long Dim f1 As String, f2 As String, f3 As String, f4 As String lig = 21 For i = 4 To imax Step 2 f1 = "=product('Coef Mul Titre Large Ret1m'!$DC$" & lig & ":$FJ$" & lig & ")-1" f2 = "=Feuil1!$DB$" & lig f3 = "=product('Coef Mul Titre Large Ret1m'!$AU$" & lig & ":$DC$" & lig & ")-1" f4 = "=Feuil1!$AT$" & lig Range("A" & i).Formula = f1 Range("B" & i).Formula = f2 Range("A" & (i + 1)).Formula = f3 Range("B" & (i + 1)).Formula = f4 lig = lig + 1 Next i End Sub
bonne suite
cindy001
Messages postés
102
Date d'inscription
lundi 20 décembre 2010
Statut
Membre
Dernière intervention
17 août 2011
2
4 janv. 2011 à 20:39
4 janv. 2011 à 20:39
Ah jmattendais pas à cque tu mréponde aussi vite Merci, jpourrais essayer ca demain matin.
Merci encore pour ton aide bonne soirée
Merci encore pour ton aide bonne soirée
cindy001
Messages postés
102
Date d'inscription
lundi 20 décembre 2010
Statut
Membre
Dernière intervention
17 août 2011
2
5 janv. 2011 à 12:33
5 janv. 2011 à 12:33
Cette macro fait exactement ce que je voulais.
Merci beaucoup, c gentil dmavoir aider.
Merci beaucoup, c gentil dmavoir aider.