Problème vba [Excel]
RésoluJ'ai problème au niveau d'un calcul [essai n1kjh] faisant référence à un autre classeur [BUFFET4P Mission]
Voici mon calcul
ActiveCell.FormulaR1C1 = "=R" & ligne & "C4-R" & ligne & "C9"
Le résultat doit s'écrire sur [essai n1kjh] et tout le calcul se fait sur [BUFFET4P Mission]. Je ne sais pas faire référence à l'autre car la formule est bonne. Ça sélectionne les cellules qu'il faut mais pas sur le bon classeur
A+
olympikyon =)
2 réponses
Problème rencontré : une référence entre classeurs en Excel via VBA, où une formule calcule sur BUFFET4P Mission et doit écrire le résultat dans essai n1kjh, mais la liaison ne s'applique pas au bon classeur. Parmi les solutions, certains préconisent d'enregistrer une macro pour générer le code de transfert entre classeurs, et d'autres proposent des références directes comme =[essai n1kjh]!A1 ou via VBA avec Sheets('[nom]').Cells(ligne, colonne). Des explications détaillent aussi l'utilisation de Sheets('[BUFFET4P Mission]').Cells(...), et Sheets('[essai n1kjh]').Cells(...), en précisant que les noms de classeur et feuille doivent être exacts et manipulables en code. En cas de changement de ligne lié à la sélection, une approche robuste implique des références dynamiques et le calcul des indices de ligne et de colonne.
-
Je ne suis pas pro du VBA,mais dans mais anciennes lectures ,je me souviens que tu pouvias créer des macros en enregistrant tes tâches.Cela va te générer le code.
Par exemple:Tu peux créer une macro qui transfert les donnés d'un classeur A vers B,en selectionnant ou non des cellules.
Pour le faire sur Excel (2007)
affichage-->macro-->enregistrer une macro.Puis tu suis les instruction et enregistre ta macro dans le disque dur pour visualiser le code et le réutiliser.
Paulnero-
-
Déja tu nous a parlé de deux classeurs et non deux feuilles, car en lisant Ctesias, je vois qu'il n' a pas bien saisi ta requête.
Pour moi je te conseillerai de regarder bien des exemples de code VBA.Si tu as des bonnes connaissance en anglais informatique je te conseille ceci:
https://www.ozgrid.com/forum/index.php?thread/68240-remove-duplicates-other-criteria/&pageNo=1
ou encore
https://forum.excel-pratique.com/viewtopic.php?forum_uri=excel&t=23789&start=
paulnero -
-
-
Salut!
Si j'ai bien compris, tu as une formule dans une feuille, et tu veux le resultat dans ton autre feuille?
Alors, si ton calcule ets dans la feuille [essai n1kjh], celluls A1, et que tu veux le resultat dans la feuille [BUFFET4P Mission], cellule B3, tu met dans la celluls A1 ta formule, et dans B3 de l'autre feuille:
=[essai n1kjh]!A1
Maintenant, je vais te fairez la réponse VBA:
Dans ton code, tu devra mettre :
Sheets("[BUFFET4P Mission]").Cells(3,2).value = Sheets("[essai n1kjh]").cells(1,1).Value
Sachant que Sheets("") fais appel à la feuille, et que Cells s'utilise Cells(ligne, colonne). (tout en chiffre).
Je sais pas si ca a repondu à ta question, mai sinon, tu peux expliquer un peu plus.
Ctesias,-
-
Essais:
Workbook("classeur1").Sheets("[BUFFET4P Mission]").Cells(3,2).value = Workbook("classeur2").Sheets("[essai n1kjh]").cells(1,1).Value
Sinon, je ne comprend pas trop ce que tu me dis ici:
ca doit reprendre cette ligne (prenons la ligne 24 mais elle change selon l'action avant la macro) et faire D24 - I24.
Peu-tu m'éclairer? (pas avec une lampe...) -
Je te montre ma macro entière et je te explique
Sub Macro4()
'
' Macro4 Macro
'
' Touche de raccourci du clavier: Ctrl+o
ligne = ActiveCell.Row
nom = ActiveWorkbook.Name
Selection.Copy
Workbooks.Open "C:\Documents and Settings\JeanMarie\Bureau\essai n1kjh"
Windows("essai n1kjh.xls").Activate
' Selectionne la première cellule du tableau
Range("B7").Select
' Boucle tant que pas vide
Do While Not (IsEmpty(ActiveCell))
NbLigne = NbLigne + 1
Selection.Offset(1, 0).Select
Loop
Selection.PasteSpecial Paste:=xlPasteValues
MsgBox "Ligne " & ActiveCell.Row
Range("B7").Select
' Boucle tant que pas vide
Do While Not (IsEmpty(ActiveCell))
NbLigne = NbLigne + 1
Selection.Offset(1, 0).Select
Loop
Windows(nom).Activate
Range("I1").Select
Selection.Copy
Windows("essai n1kjh.xls").Activate
Selection.Offset(-1, -1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.Offset(0, 3).Select
Selection.ClearContents
Selection.Offset(0, 1).Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "=R" & ligne & "C4-R" & ligne & "C8"
Windows("essai n1kjh.xls").Activate
ActiveWorkbook.Save
Workbooks("essai n1kjh.xls").Close
Windows(nom).Activate
End Sub -
-
-