Bonjour à toutes et à tous,
J'ai écris un programme d'extraction de données d'un fichier Excel à un autre. Dans une cellule, je souhaite mettre une formule (un IF) qui va voir ce qu'il y a dans la cellule d'à coté et faire un petit calcul le cas échéant. Le tout est imbriqué dans une boucle For, j'utilise donc une variable en indice de ligne.
Voici le début de mon code. La ligne de code concernée est en gras et rouge (je précise que le reste fonctionne très bien c'est juste cette ligne qui pose soucis):
Je suis complètement bloqué avec cette formule. Je ne vois pas où se trouve mon erreur étant donnée que c'est la premiere fois que je fais ce genre de code.Code:Private Sub CommandButton1_Click() 'Définition des variables Dim FichierMaintenance As Workbook Dim FichierPlanning As Workbook Dim i As Long Dim SemaineUtilisateur1 As Long Dim SemaineUtilisateur2 As Long Dim SemaineUtilisateur3 As Long Dim SemaineAnnee As String Dim SemaineMaintenance As Long Dim DateDebut As Date Dim OT As Long Dim WorkCenterMaintenance Dim EtatImmoMarchine As String Dim EtatImmoOperateur As String Dim DescriptionOT As String 'Test si l'utilisateur à bien entré une donnée If TextBox1.Value = "" Then MsgBox ("Merci d'entrez une valeur!") TextBox1.SetFocus Else SemaineUtilisateur1 = TextBox1.Value End If 'Calcul de la (Sem+1) et (Sem+2) pour afficher extract sur 3 semaines SemaineUtilisateur2 = SemaineUtilisateur1 + 1 SemaineUtilisateur3 = SemaineUtilisateur2 + 1 'Donne au programme le lien pour allez chercher le fichier maintenance 'UPDATER CETTE PARTIE POUR IMPLEMENTATION 'Dim Repertoire As String 'Lien du fichier maintenance 'Repertoire = "C:\...." 'POUR LE TEST Dim Repertoire1 As String Repertoire1 = "G:\I care - LEAN\Follow up new organisation 08 2015\Fichier Planning New Orga\Copy of 1 Copy of Copie de Planif Maint Prév à Avril (2).xlsx" 'Attribut aux variables les 2 fichiers Excel et ouvre le fichier maintenance 'Set FichierMaintenance = Application.Workbooks.Open(Repertoire, False, True) Set FichierPlanning = ThisWorkbook Set FichierMaintenance = Application.Workbooks.Open(Repertoire1, False, True) 'Calcul automatique désactivité pour éviter de faire ramer le programme Application.Calculation = xlCalculationManual 'Recherche de la dernière ligne du fichier maintenance Dim DerniereLigneMaint As Long DerniereLigneMaint = FichierMaintenance.Worksheets("Planning").Range("S" & Rows.Count).End(xlUp).Row '***************************************************************************************** 'Pour N1L Dim DerniereLignePlanningN1L As Long Dim WorkCenterPlanning1L WorkCenterPlanning1L = "Asset F&P Nord 1L" 'Boucle permettant de ballayer toutes les lignes du fichier maintenance For i = 3 To DerniereLigneMaint SemaineAnnee = FichierMaintenance.Worksheets("Planning").Cells(i, 19).Value SemaineMaintenance = Left(SemaineAnnee, 2) WorkCenterMaintenance = FichierMaintenance.Worksheets("Planning").Cells(i, 9).Value 'Semaine 1 de l'utilisateur If SemaineMaintenance = SemaineUtilisateur1 And WorkCenterMaintenance = WorkCenterPlanning1L Then OT = FichierMaintenance.Worksheets("Planning").Cells(i, 3).Value EtatImmoMachine = FichierMaintenance.Worksheets("Planning").Cells(i, 13).Value EtatImmoOperateur = FichierMaintenance.Worksheets("Planning").Cells(i, 14).Value DescritpionOT = FichierMaintenance.Worksheets("Planning").Cells(i, 8).Value DateDebut = FichierMaintenance.Worksheets("Planning").Cells(i, 15).Value DerniereLignePlanningN1L = FichierPlanning.Worksheets("1 L").Range("A" & Rows.Count).End(xlUp).Row + 1 FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 1) = DatePart("ww", Date, vbMonday, vbFirstFourDays) FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 2).Value = SemaineMaintenance FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 3).Value = OT FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 4).Value = DateDebut FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 5).Formula = "IF(Cells(DerniereLignePlanningN1L, 7)="";"";((Cells(DerniereLignePlanningN1L, 7)*34000)/6.25))" FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 6).Value = EtatImmoMachine 'FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 7).Value = DUREE FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 8).Value = EtatImmoOperateur 'FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 9).Value = FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 10).Value = DescritpionOT End If 'Semaine 2 de l'utilisateur If SemaineMaintenance = SemaineUtilisateur2 And WorkCenterMaintenance = WorkCenterPlanning1L Then OT = FichierMaintenance.Worksheets("Planning").Cells(i, 3).Value EtatImmoMachine = FichierMaintenance.Worksheets("Planning").Cells(i, 13).Value EtatImmoOperateur = FichierMaintenance.Worksheets("Planning").Cells(i, 14).Value DescritpionOT = FichierMaintenance.Worksheets("Planning").Cells(i, 8).Value DateDebut = FichierMaintenance.Worksheets("Planning").Cells(i, 15).Value DerniereLignePlanningN1L = FichierPlanning.Worksheets("1 L").Range("A" & Rows.Count).End(xlUp).Row + 1 FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 1) = DatePart("ww", Date, vbMonday, vbFirstFourDays) FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 2).Value = SemaineMaintenance FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 3).Value = OT FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 4).Value = DateDebut 'FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 5).Value = EQUIVALENT VOLUME FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 6).Value = EtatImmoMachine 'FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 7).Value = DUREE FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 8).Value = EtatImmoOperateur 'FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 9).Value = FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 10).Value = DescritpionOT End If 'Semaine 3 de l'utilisateur If SemaineMaintenance = SemaineUtilisateur3 And WorkCenterMaintenance = WorkCenterPlanning1L Then OT = FichierMaintenance.Worksheets("Planning").Cells(i, 3).Value EtatImmoMachine = FichierMaintenance.Worksheets("Planning").Cells(i, 13).Value EtatImmoOperateur = FichierMaintenance.Worksheets("Planning").Cells(i, 14).Value DescritpionOT = FichierMaintenance.Worksheets("Planning").Cells(i, 8).Value DateDebut = FichierMaintenance.Worksheets("Planning").Cells(i, 15).Value DerniereLignePlanningN1L = FichierPlanning.Worksheets("1 L").Range("A" & Rows.Count).End(xlUp).Row + 1 FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 1) = DatePart("ww", Date, vbMonday, vbFirstFourDays) FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 2).Value = SemaineMaintenance FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 3).Value = OT FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 4).Value = DateDebut 'FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 5).Value = EQUIVALENT VOLUME FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 6).Value = EtatImmoMachine 'FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 7).Value = DUREE FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 8).Value = EtatImmoOperateur 'FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 9).Value = FichierPlanning.Worksheets("1 L").Cells(DerniereLignePlanningN1L, 10).Value = DescritpionOT End If Next i '*****************************************************************************************
Si vous avez une idée ???
Merci d'avance.
-----