Macro avec code conditionelle

bloomby

XLDnaute Occasionnel
Bonjour à tous,

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

merci

Sheets("Sheet1").Select

Range("B20").Select
ActiveCell.FormulaR1C1 = "=IF(DATA!RC<> """",DATA!RC/DATA!R[1]C-1,"""")"
Range("B20").Select
Selection.AutoFill Destination:=Range("B20:AO20"), Type:=xlFillDefault
Range("B20:AO20").Select
Selection.AutoFill Destination:=Range("B20:AO520"), Type:=xlFillDefault
Range("B20:AO520").Select

End Sub
 

vbacrumble

XLDnaute Accro
Re : Macro avec code conditionelle

Bonsoir



Code:
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 ?)

A+
 

bloomby

XLDnaute Occasionnel
Re : Macro avec code conditionelle

Bonjour vbacrumble,

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

merci
 

vbacrumble

XLDnaute Accro
Re : Macro avec code conditionelle

Re



En prenant ton fichier exemple de l'autre post

Essaie ceci
Code:
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

A+
 
Dernière édition:

bloomby

XLDnaute Occasionnel
Re : Macro avec code conditionelle

Bonjour à tous, VBAcrumble,

J'aimerais modifier l'un de tes codes;

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

merci

merci
 
Dernière édition:

vbacrumble

XLDnaute Accro
Re : Macro avec code conditionelle

Bonjour


Essayes ces modifications

Code:
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
 

bloomby

XLDnaute Occasionnel
Re : Macro avec code conditionelle

Bonjour finl VBACrumble,

Je désire Créer une Matrice,

(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

=SUMPRODUCT(Sheet2!$B$2:OFFSET(Sheet2!$B$1,Nb,0),Sheet1!$C2:OFFSET(Sheet1!$C1,Nb,0),Sheet1!C2:OFFSET(Sheet1!C1,Nb,0))

=SUMPRODUCT(Sheet2!$B$2:OFFSET(Sheet2!$B$1,Nb,0),Sheet1!$D2:OFFSET(Sheet1!$D1,Nb,0),Sheet1!D2:OFFSET(Sheet1!D1,Nb,0))
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 ....


merci de votre aide
 
Dernière édition:

Discussions similaires

  • Question
Microsoft 365 Formules
Réponses
2
Affichages
445

Statistiques des forums

Discussions
312 345
Messages
2 087 492
Membres
103 559
dernier inscrit
pascalbill