XL 2013 Formules et code VBA

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 !

lovesky

XLDnaute Junior
Bonjour à tous,

Je suis face à un petit soucis, j'essaye d'intégrer des formules que j'utilise dans une feuille dans un code VBA mais je n'y arrive pas :'(

J'ai une feuille "liquide" et "liquideold"
Mon code VBA me permet de mettre ma feuille "liquide" dans une autre feuille "Resume"
Mes colonnes vont de A à T
Voici le code :

Sub sample()
Dim wsO As Worksheet, wsI As Worksheet
Dim wsOLRow As Long, wsILRow As Long

Set wsO = ThisWorkbook.Worksheets("Resume")
Set wsI = ThisWorkbook.Worksheets("liquide")

With wsO
If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
wsOLRow = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row + 1
Else
wsOLRow = 1
End If
End With

With wsI
wsILRow = .Range("A" & .Rows.Count).End(xlUp).Row
For i = 1 To wsILRow
If .Cells(i, "T").Value2 <> 0 Then
.Rows(i).Copy wsO.Rows(wsOLRow)
wsOLRow = wsOLRow + 1
ElseIf .Cells(i, "T").Value2 = 0 Then
If .Cells(i, "C").Value2 < 81 Or .Cells(i, "C").Value2 > 99 Then
.Rows(i).Copy wsO.Rows(wsOLRow)
wsOLRow = wsOLRow + 1
End If
End If

Next i
End With
End Sub


Ensuite, je vais sur ma feuille "Resume" et :
  • dans la colonne T : je mets la formule "=INDEX(liquideold!L:L;MATCH(I3;liquideold!I:I;0))"
  • Colonne U : "=MATCH(I3;liquideold!I:I;0)"
  • Colonne V : "=INDEX(liquideold!K:K;MATCH(I3;liquideold!I:I;0))"
Puis je tire vers le bas, jusqu'à la dernière ligne, mes formules.

Ce que j'aurai aimé, c'est que lorsque j'exporte ma feuille "liquide" vers "resume", les colonnes T, U et V soit insérées automatiquement.

Je vous remercie d'avance pour votre aide
 
Oupssss sotte que je suis, je me suis trompé en indiquant les colonnes ... il fallait lire :
  • dans la colonne U : je mets la formule "=INDEX(liquideold!L:L;MATCH(I3;liquideold!I:I;0))"
  • Colonne V : "=MATCH(I3;liquideold!I:I;0)"
  • Colonne W : "=INDEX(liquideold!K:K;MATCH(I3;liquideold!I:I;0))"
Mille excuses 😛
 
Joignez votre classeur.

Ou testez vous même à la fin :
VB:
With wsO.Rows(2).Resize(wsOLRow - 1)
   .Columns("V").FormulaR1C1 = "=MATCH(RC9,LiquideOld!C9,0)"
   .Columns("U").FormulaR1C1 = "=INDEX(LiquideOld!C12,RC[1])"
   .Columns("W").FormulaR1C1 = "=INDEX(LiquideOld!C11,RC[-1])"
   End With
 
Dernière édition:
J'ai un arrêt sur Set wsII = ThisWorkbook.Worksheets("poudre"): cette feuille n'existe pas.
Pourquoi n'utilisez vous pas les noms d'objets Worksheet de la rubrique Microsoft Excel Objets ? Ce serait plus simple ! Quitte à les renommer plus explicitement dans la fenêtre de propriétés (Je ne parle pas des noms des feuilles Excel dont ces objets assument la représentation dans VBA).
Essayez tout à la fin mon code en Edit poste précédent.
 
Dernière édition:
J'ai supprimé les feuilles "poudre" et "autres" pour
1) pour que le fichier ne soit pas trop lourd
2) car j'applique le même principe sur ces feuilles que la feuille "liquide"

Je vais tester votre code et reviendrai dire ce qu'il en est.

Merci à vous
 
- 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

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
45
Réponses
2
Affichages
371
Réponses
4
Affichages
332
Réponses
3
Affichages
216
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
482
Retour