Transformation d'une formule matricielle en VBA

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

  • Rotation.xls
    430 KB · Affichages: 45
  • Rotation.xls
    430 KB · Affichages: 44
  • Rotation.xls
    430 KB · Affichages: 43

hypo78

XLDnaute Impliqué
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:

Staple1600

XLDnaute Barbatruc
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:

Staple1600

XLDnaute Barbatruc
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:

hypo78

XLDnaute Impliqué
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....
 

hypo78

XLDnaute Impliqué
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 çà.
 

Discussions similaires

Réponses
6
Affichages
144

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 535
dernier inscrit
moimeme1