• Initiateur de la discussion Initiateur de la discussion Miishiru
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

Miishiru

Guest
Bonjour,
Je n'arrive pas à programmer ce que je veux faire.
Je voudrais que :
Dans la cellule A4 : =SI('Trame Stock'!D4>'Trame Stock'!H4;'Trame Stock'!A4;0)
Dans la cellule B4 : =SI('Trame Stock'!D4>'Trame Stock'!H4;'Trame Stock'!B4;0)
Dans la cellule C4 : =SI('Trame Stock'!D4>'Trame Stock'!H4;'Trame Stock'!D4-'Trame Stock'!H4;0)
Dans la cellule E4 :=C4/B4

Et que la totalité des formules dans chaque colonne se répètent jusqu’à la ligne 160 en changeant le numéro de ligne (qui apparaît en gras )

Je débute tout juste et j'ai beaucoup de mal...
Pouvez-vous m'aider ?
Merci
 
Re : Traduction en VBA

Hello

à tester dans ton fichier
ouvrir editeur VBA: Alt+F11
à gauche, clic droit sur le vbaProjet de ton fichier, insertion module
dans la fenetre à droite
coller ce code
Code:
Sub AddFormules()

formuleA = "=SI('Trame Stock'!D4>'Trame Stock'!H4;'Trame Stock'!A4;0)"
formuleB = "=SI('Trame Stock'!D4>'Trame Stock'!H4;'Trame Stock'!B4;0)"
formuleC = "=SI('Trame Stock'!D4>'Trame Stock'!H4;'Trame Stock'!D4-'Trame Stock'!H4;0)"
formuleE = "=C4/B4"

Range("A4").FormulaLocal = formuleA
Range("B4").FormulaLocal = formuleB
Range("C4").FormulaLocal = formuleC
Range("E4").FormulaLocal = formuleE

Range("A4:C160").FillDown
Range("E4:E160").FillDown


End Sub
 
Re : Traduction en VBA

Un peu comme ci-dessous , mais ca ne fonctionne pas.
Ca me dit erreur de Syntaxe

formuleA = If Sheets("Tramesurplus").Cells("D4")>Sheets("Tramesurplus").Cells("H4"),Sheets("Tramesurplus").Cells("A4"), 0 )
 
Re : Traduction en VBA

Bonjour Miishiru, vgendron,

s'il s'agit bien d'avoir des formules dans les cellules des colonnes A,B,C,E, il me semble que le principe de vgendron est la seule manière possible; et ça fonctionne ...
Si on le veut en anglais (plus portable qu'en français) :
Code:
formuleA = "=If('Trame Stock'!D4>'Trame Stock'!H4,'Trame Stock'!A4,0)"
formuleB = ...
...
...
Range("A4").Formula = formuleA
Range("B4")....
...
...

A+
 
Re : Traduction en VBA

Hello Paf

Si on le veut en anglais (plus portable qu'en français) :
est ce à dire que, des formules VBA écrites en Anglais seront reconnues automatiquement par une version francaise d'excel, mais que la réciproque n'est pas vraie ?

si c''est ca. c'est bon à savoir.. car je me fais souvent suer avec ce genre " d'incompatiblité" ;-)

@Misshiru: qu'est ce qui ne fonctionne pas dans TON fichier?: message d'erreur?

Ca me dit erreur de Syntaxe

formuleA = If Sheets("Tramesurplus").Cells("D4")>Sheets("Tramesu rplus").Cells("H4"),Sheets("Tramesurplus").Cells(" A4"), 0 )


normal: formuleA est une chaine de caractère: commence par " et finit par "
 
Re : Traduction en VBA

Re,

@ vgendron:
est ce à dire que, des formules VBA écrites en Anglais seront reconnues automatiquement par une version francaise d'excel, mais que la réciproque n'est pas vraie ?

D'après ce que j'ai compris ( pas eu l'occasion de tester):

si les formules sont écrites en français dans FormulaLocal, le code ne fonctionnera que pour Excel en français, alors que si écrites en anglais dans Formula, la formule sera adaptée à la langue utilisée.

A+
 
Re : Traduction en VBA

Bonjour à tous 🙂

Peut-être comme ceci. A mettre dans le module de la feuille "Tramesurplus". Une adaptation avec le code de vgendron.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim formuleA$, formuleB$, formuleC$, formuleE$
Application.EnableEvents = False
Application.ScreenUpdating = False

formuleA = "=SI('Trame Stock'!D4>'Trame Stock'!H4;'Trame Stock'!A4;0)"
formuleB = "=SI('Trame Stock'!D4>'Trame Stock'!H4;'Trame Stock'!B4;0)"
formuleC = "=SI('Trame Stock'!D4>'Trame Stock'!H4;'Trame Stock'!D4-'Trame Stock'!H4;0)"
formuleE = "=C4/B4"

Range("A4").FormulaLocal = formuleA
Range("B4").FormulaLocal = formuleB
Range("C4").FormulaLocal = formuleC
Range("E4").FormulaLocal = formuleE

Range("A4:C4").Copy
With Sheets("Trame Stock")
.Range("A4").PasteSpecial Paste:=xlFormulas
.Range("A4:C4").AutoFill .Range("A4:C160"), Type:=xlFillDefault
End With


With Sheets("Trame Stock")
Range("E4").Copy
.Range("E4").PasteSpecial Paste:=xlFormulas
End With

Application.CuteCopyMode = False

Application.EnableEvents = True
End Sub
 
Dernière édition:
Re : Traduction en VBA

Re

la macro n'était pas correcte, celle-ci (en exemple) fonctionne, mais tu dois l'adapter.


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Application.ScreenUpdating = False

Range("A4").FormulaLocal = "=SI(D4>G4;Feuil2!A3;D4)"
Range("B4").FormulaLocal = "=SI(D4>G4;Feuil2!B3;D4)"
Range("C4").FormulaLocal = "=SI(D4>G4;Feuil2!C3;D4)"


If Range("d4") > Range("g4") Then
Range("A4:C4").Copy
With Sheets("Feuil2")
.Range("A4").PasteSpecial Paste:=xlFormulas
.Range("A4:C4").AutoFill .Range("A4:C160"), Type:=xlFillDefault
End With
End If
Application.CuteCopyMode = False
Application.EnableEvents = True
End Sub
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
11
Affichages
648
  • Question Question
Réponses
6
Affichages
762
Retour