Mon code si dessous n'est pas conditionelle;
alors voila, lorsqu'il y a une valeur dans la colonne B1
je désire que le code inscrive la formule dans la cellule B20
et lorsqu'il n'y à aucune valeur par exemple G1
et bien la macro s'arrette à cette endroit, donc aucune formule d'inscrite dans la cellule G20
Et non pas comme mon Code qui va de B20:A020
sans condition
Sub macro()
Dim x
Sheets("Sheet1").Select
x = 10
Range("B20").FormulaR1C1 = "=IF(Feuil1!RC<> """",Feuil1!RC/Feuil1!R[1]C-1,"""")"
Range("B20").AutoFill Destination:=Range(Cells(20, 2), Cells(20, x)), Type:=xlFillDefault
End Sub
(PS: remettre le bon nom de la feuille)
Le x peut être utiliser autrement
(Tu parles de G1 mais de quelle feuille ?)
Merci de ton aide, mais dans les faits le x est conditionnelle a si il y a une valeur dans G1 ou 10 si tu aime mieux
par exemple si il y a un valeur dans la colonne 15 je désire que la formule s'écrive jusque la, si il y a une valeur jusqu'a la colonne 163 et bien je désire que la forume s'écrive jusqu'à cette colonne
bref, c'est pour cela que je parle de conditionelle à la colonne 1
mais il ne fonctionne pas;
j'ai donc créé le code présenté dans le premier msg, mais il n'est pas conditionnel à s'il y a une valeur ou pas dans la colonne 1
sub macro()
Dim i
For i = 1 To 3
ThisWorkbook.Sheets(2).Range(Sheets(2).Cells(1, i), _
Sheets(1).Cells(65536, i).End(xlUp).Offset(-1, 0).Address).FormulaR1C1 = _
"=IF(Sheet1!RC<>"""",Sheet1!RC/Sheet1!R[1]C,"""")"
Next
J'ai testé, cela fonctionne.
Pour la commodité de lecture
Code:
sub macros()
Dim f As Worksheet: Dim f2 As Worksheet
Dim formule As String: Dim i: Dim fin As Range
Set f = ThisWorkbook.Sheets(2)
Set f2 = ThisWorkbook.Sheets(1)
formule = _
"=IF(Sheet1!RC<>"""",Sheet1!RC/Sheet1!R[1]C,"""")"
For i = 1 To 3
Set fin = f2.Cells(65536, i).End(xlUp).Offset(-1, 0)
f.Range(f.Cells(1, i), _
fin.Address).FormulaR1C1 = formule
Next
end sub
j'aimerais maintenant faire une boucle à (formule)
formule = _
"=IF(Px!RC<>"""",Sheet1!RC/Sheet1!R[1]C,"""")"
For i = 2 To Evaluate(ActiveWorkbook.Names("NbSymbol").Value)
Set fin = f2.Cells(2, i)
f.Range(f.Cells(2, i), _
fin.Address).FormulaR1C1 = formule
dans les fait j'aimerais avoir un formule2 formule3 formule4
qui fait la même chose que la macro ci-haut, mais (ex: pour la forumule2 au lieu de (2,i) c'est (3,i) pour formule3 (4,i) ....
et bien sur que je puisse changer "=IF(Px!RC<>"""",Sheet1!RC/Sheet1!R[1]C,"""")"
pour chaque formule
Option Explicit
Sub macro250209s()
Dim f As Worksheet, f2 As Worksheet
Dim formule$, i As Byte, fin As Range
Set f = ThisWorkbook.Sheets(2)
Set f2 = ThisWorkbook.Sheets(1)
formule = _
"=IF(Feuil1!RC<>"""",Feuil1!RC/Feuil1!R[1]C,"""")"
For i = 1 To 3
Set fin = _
f2.Cells(i, "IV").End(xlToLeft)
f.Range(f.Cells(i, 1), _
fin.Address).FormulaR1C1 = formule
Next
End Sub
(je vous conseil de lire le fichier joins, car les mêmes explications s'y retrouve et il sont plus clair avec un exemple)
Cijoint.fr - Service gratuit de dépôt de fichiers
Debut de solution:
Sub macro()
Dim f As Worksheet: Dim f2 As Worksheet
Dim formule As String: Dim i: Dim fin As Range
Set f = ThisWorkbook.Sheets("Matrice")
Set f2 = ThisWorkbook.Sheets("Sheet1")
formule = _
"=SUMPRODUCT(Sheet2!$B$2:OFFSET(Sheet2!$B$1,Nb,0),Sheet1!$B2:OFFSET(Sheet1!$B1,Nb,0),Sheet1!B2:OFFSET(Sheet1!B1,Nb,0)) "
For i = 2 To Evaluate(ActiveWorkbook.Names("NbSymbol").Value)
Set fin = f2.Cells(2, i)
f.Range(f.Cells(2, i), _
fin.Address).FormulaR1C1 = formule
Next
Pour le Next au lieu de f2.Cells(2, i) on devrait avoir 3,i et une autre modification pour comencer à C3 ensuite D4 ....
Deplus la formule devrait être
Bref, si vous regader l'exemple le produit final devrait ressembler à cela
et la Macro devrais être conditionnel au nombre de symbol (dans L'exemple il y a 8 symbol) mais si dans la Sheet1 il y a 30 Symbol,
Cette matrice devrait être plus grande ....