Transformation d'une formule matricielle en VBA

  • Initiateur de la discussion Initiateur de la discussion hypo78
  • 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 !

hypo78

XLDnaute Impliqué
Bonjour à tous,
Grâce à l'aide du forum il y a quelques années, j'avais mis en place au niveau de mon boulot un fichier comportant une formule matricielle.
Depuis, avec le succès ce fichier s'est répandu sur différents sites mais je suis obligé d'en assurer l'évolution d'une année sur l'autre ce qui devient très contraignant.

L'idée est donc de passer par du VBA.

Sur la feuille nommée "Piquets" on trouve des liens vers d'autres classeurs que je vais tenter de transformer en VBA pour alléger mon fichier.

La formule matricielle que l'on trouve sur la feuille "aide rotation" fait référence aux données de la feuille "Piquets".
Code:
=SI(MAX(SI((Piquets!$B$1:$AL$1=B$1)*(Piquets!$B$2:$AL$29=$A2);Piquets!$A$2:$A$29))=0;"";MAX(SI((Piquets!$B$1:$AL$1=B$1)*(Piquets!$B$2:$AL$29=$A2);Piquets!$A$2:$A$29)))

Mon problème, si j'ajoute des lignes (par exemple 150) à la suite des lignes remplies sur la feuille "Piquets" et que je supprime les 150 premières, la formule matricielle réduit la zone de 150 lignes..... (pour l'exemple je n'ai laissé que 29 lignes)

Dans l'idéal, il faudrait travailler sur 6 mois de données, que mon code que je vais tenter de réaliser, crée une nouvelle ligne, supprime la plus ancienne et que la formule matricielle ne change pas.

Je joins un bout du fichier pour l'exemple.

Merci d'avance
 

Pièces jointes

Re : Transformation d'une formule matricielle en VBA

J'ai réussi par ce petit code à mettre les dates comme je veux en colonne 1

Code:
 Sub MAJdate()

Sheets("feuil1").Activate

For i = 2 To 150
Cells(i, 1) = Date - (140 - i)
Next i

Call MAJpiquets

End Sub

Je souhaiterais maintenant copier les données provenant d'un autre classeur en fonction de ces dates en colonne 1

J'ai commencé à écrire ce code mais mon classeur n'est pas reconnu, pourquoi??

Code:
Sub MAJpiquets()

Dim rotation As Workbook
Dim GardeDuJour As Workbook
Dim garde As Sheets

jourgarde = Cells(2, 1)
jourgarde = Format((jourgarde), "dd/mm/yyyy")

GardeDuJour = ThisWorkbook.Path & "\" & Format(jourgarde, "yyyy") & "\" & Format(jourgarde, "mmmmyyyy") & "\" & Format(jourgarde, "ddmmmmyyyy") & ".xls"
MsgBox GardeDuJour

End Sub

L'arborescence dans mon exemple est la suivante :
2013\septembre2013\09septembre2013.xls

Merci d'avance
 
Dernière édition:
Re : Transformation d'une formule matricielle en VBA

Bonjour à tous

Peux-tu tester ceci?
Code:
MsgBox ThisWorkbook.Path
Qu'affiche alors le MsgBox ?

PS: Personnellement j'écrirai simplement
jourgarde = Format(Cells(2,1), "dd/mm/yyyy")
 
Dernière édition:
Re : Transformation d'une formule matricielle en VBA

Re


Et les sous-répertoires 2013 et septembre sont déjà existants?
Le résultat de ton MsgBox indiquerait que le classeur contenant le code VBA est enregistré dans
[noparse]C:\Documents and Settings\nom\Bureau\rotation[/noparse]
C'est bien cela?

Sinon voir aussi dans l'aide VBA (touche F1), du côté de ChDir et MkDir
 
Dernière édition:
Re : Transformation d'une formule matricielle en VBA

ce code
Code:
 Sub MAJpiquets()


Dim rotation As Workbook
Dim garde As Sheets

jourgarde = Cells(2, 1)
jourgarde = Format(jourgarde, "dd/mm/yyyy")

GardeDuJour = Racine & Format(jourgarde, "yyyy") & "\" & Format(jourgarde, "mmmmyyyy") & "\" & Format(jourgarde, "ddmmmmyyyy"".xls")

MsgBox GardeDuJour

End Sub


me renvoit

Code:
 2013\septembre2013\09septembre2013

il me manque juste le dossier....
 
Re : Transformation d'une formule matricielle en VBA

Code:
 Sub MAJpiquets()


Dim rotation As Workbook
Dim garde As Sheets



jourgarde = Cells(2, 1)
jourgarde = Format(jourgarde, "dd/mm/yyyy")

GardeDuJour = ThisWorkbook.Path & Format(jourgarde, "yyyy") & "\" & Format(jourgarde, "mmmmyyyy") & "\" & Format(jourgarde, "ddmmmmyyyy"".xls")

MsgBox GardeDuJour

End Sub
c est ok avec çà.
 
- 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

Réponses
3
Affichages
319
Réponses
10
Affichages
596
Réponses
4
Affichages
131
Réponses
4
Affichages
386
Réponses
7
Affichages
116
Retour