Amélioration d'un code
Bonsoir le forum,
Ci-après un code que je souhaiterai voir amélioré.
Je voudrais savoir s'il est possible d'écourter toutes les déclarations de variables et leur initialisation, et éventuellement d'améliorer le reste du code. Par exemple est-il possible en appelant les variables Intitule1_1 à Intitule30_3, Intitule1,2,3....99, de faire une boucle pour les initialiser ?
Mes connaissances d'excel sont essentiellement "livresques", mais après, au fil des années, avoir vu ce qui peux se pratiquer en m'étant inscrit sur se site, j'avoue avoir un peu "honte" de remettre la même chose.
Le code ouvre une archive, copie le fichier "en cours" et reprend ses intitulés et dates pour les transposer vers un fichier "maître" qui sert de modèle à la création de tout nouveau fichier. Ce fichier maître étant entièrement remodelé, je dois intervenir sur ce code.
Private Sub UserForm_Activate()
Dim DernierProtege As String
Application.ScreenUpdating = False
LDProtegesActifs
DernierProtege = Worksheets("Actifs").Range("B6").End(xlDown).Address
'Sélection de la plage de données à afficher dans la liste déroulante
'Choixprotege = nom zone du UserForm ListeDeroulante dans laquelle s'affichent les protégés
Choixprotege.RowSource = "Actifs!B6:" & DernierProtege
'Affichage à chaque ouverture du 1er protégé de la liste
Choixprotege.ListIndex = 0
'et focus sur le nom du protégé
Choixprotege.SetFocus
'Affichage de la page d'accueil
Sheets("PAccueil").Select
Application.ScreenUpdating = True
End Sub
Private Sub Annuler_Click()
Unload CreerDecompte
End Sub
Private Sub Valider_Click()
Dim bdd As Workbook
Dim bdd1 As Workbook
Dim bdd2 As Workbook
Dim bdd3 As Workbook
Dim nombdd As String
Dim nombdd1 As String
Dim nombdd2 As String
Dim nombdd3 As String
Dim nomfichier As String
Dim numeropro As String
Dim numindex As String
Dim valeursolde1 As Currency
Dim valeursolde2 As Currency
Dim valeursolde3 As Currency
Dim valeursolde4 As Currency
Dim valeursolde5 As Currency
Dim valeursolde6 As Currency
Dim valeursolde7 As Currency
Dim valeursolde8 As Currency
Dim valeursolde9 As Currency
Dim valeursolde10 As Currency
Dim valeursolde11 As Currency
Dim valeursolde12 As Currency
Dim valeursolde13 As Currency
Dim valeursolde14 As Currency
Dim valeursolde15 As Currency
Dim valeursolde16 As Currency
Dim valeursolde17 As Currency
Dim valeursolde18 As Currency
Dim valeursolde19 As Currency
Dim valeursolde20 As Currency
Dim valeursolde21 As Currency
Dim valeursolde22 As Currency
Dim valeursolde23 As Currency
Dim valeursolde24 As Currency
Dim valeursolde25 As Currency
Dim valeursolde26 As Currency
Dim valeursolde27 As Currency
Dim valeursolde28 As Currency
Dim valeursolde29 As Currency
Dim valeursolde30 As Currency
Dim intitule1_1 As String
Dim intitule1_2 As String
Dim intitule1_3 As String
Dim intitule2_1 As String
Dim intitule2_2 As String
Dim intitule2_3 As String
Dim intitule3_1 As String
Dim intitule3_2 As String
Dim intitule3_3 As String
Dim intitule4_1 As String
Dim intitule4_2 As String
Dim intitule4_3 As String
Dim intitule5_1 As String
Dim intitule5_2 As String
Dim intitule5_3 As String
Dim intitule6_1 As String
Dim intitule6_2 As String
Dim intitule6_3 As String
Dim intitule7_1 As String
Dim intitule7_2 As String
Dim intitule7_3 As String
Dim intitule8_1 As String
Dim intitule8_2 As String
Dim intitule8_3 As String
Dim intitule9_1 As String
Dim intitule9_2 As String
Dim intitule9_3 As String
Dim intitule10_1 As String
Dim intitule10_2 As String
Dim intitule10_3 As String
Dim intitule11_1 As String
Dim intitule11_2 As String
Dim intitule11_3 As String
Dim intitule12_1 As String
Dim intitule12_2 As String
Dim intitule12_3 As String
Dim intitule13_1 As String
Dim intitule13_2 As String
Dim intitule13_3 As String
Dim intitule14_1 As String
Dim intitule14_2 As String
Dim intitule14_3 As String
Dim intitule15_1 As String
Dim intitule15_2 As String
Dim intitule15_3 As String
Dim intitule16_1 As String
Dim intitule16_2 As String
Dim intitule16_3 As String
Dim intitule17_1 As String
Dim intitule17_2 As String
Dim intitule17_3 As String
Dim intitule18_1 As String
Dim intitule18_2 As String
Dim intitule18_3 As String
Dim intitule19_1 As String
Dim intitule19_2 As String
Dim intitule19_3 As String
Dim intitule20_1 As String
Dim intitule20_2 As String
Dim intitule20_3 As String
Dim intitule21_1 As String
Dim intitule21_2 As String
Dim intitule21_3 As String
Dim intitule22_1 As String
Dim intitule22_2 As String
Dim intitule22_3 As String
Dim intitule23_1 As String
Dim intitule23_2 As String
Dim intitule23_3 As String
Dim intitule24_1 As String
Dim intitule24_2 As String
Dim intitule24_3 As String
Dim intitule25_1 As String
Dim intitule25_2 As String
Dim intitule25_3 As String
Dim intitule26_1 As String
Dim intitule26_2 As String
Dim intitule26_3 As String
Dim intitule27_1 As String
Dim intitule27_2 As String
Dim intitule27_3 As String
Dim intitule28_1 As String
Dim intitule28_2 As String
Dim intitule28_3 As String
Dim intitule29_1 As String
Dim intitule29_2 As String
Dim intitule29_3 As String
Dim intitule30_1 As String
Dim intitule30_2 As String
Dim intitule30_3 As String
Dim annee
Dim annee1
Dim ddedebut As Date
Dim ddefin As Date
Dim ddebutorganisme As Date
Dim dfinorganisme As Date
Dim CreerUnDecompte As Integer
'--------------------------------------
Dim soldeprecedent As Currency
'--------------------------------------
Application.ScreenUpdating = False
valeursolde1 = 0
valeursolde2 = 0
valeursolde3 = 0
valeursolde4 = 0
valeursolde5 = 0
valeursolde6 = 0
valeursolde7 = 0
valeursolde8 = 0
valeursolde9 = 0
valeursolde10 = 0
valeursolde11 = 0
valeursolde12 = 0
valeursolde13 = 0
valeursolde14 = 0
valeursolde15 = 0
valeursolde16 = 0
valeursolde17 = 0
valeursolde18 = 0
valeursolde19 = 0
valeursolde20 = 0
valeursolde21 = 0
valeursolde22 = 0
valeursolde23 = 0
valeursolde24 = 0
valeursolde25 = 0
valeursolde26 = 0
valeursolde27 = 0
valeursolde28 = 0
valeursolde29 = 0
valeursolde30 = 0
intitule1_1 = " "
intitule1_2 = " "
intitule1_3 = " "
intitule2_1 = " "
intitule2_2 = " "
intitule2_3 = " "
intitule3_1 = " "
intitule3_2 = " "
intitule3_3 = " "
intitule4_1 = " "
intitule4_2 = " "
intitule4_3 = " "
intitule5_1 = " "
intitule5_2 = " "
intitule5_3 = " "
intitule6_1 = " "
intitule6_2 = " "
intitule6_3 = " "
intitule7_1 = " "
intitule7_2 = " "
intitule7_3 = " "
intitule8_1 = " "
intitule8_2 = " "
intitule8_3 = " "
intitule9_1 = " "
intitule9_2 = " "
intitule9_3 = " "
intitule10_1 = " "
intitule10_2 = " "
intitule10_3 = " "
intitule11_1 = " "
intitule11_2 = " "
intitule11_3 = " "
intitule12_1 = " "
intitule12_2 = " "
intitule12_3 = " "
intitule13_1 = " "
intitule13_2 = " "
intitule13_3 = " "
intitule14_1 = " "
intitule14_2 = " "
intitule14_3 = " "
intitule15_1 = " "
intitule15_2 = " "
intitule15_3 = " "
intitule16_1 = " "
intitule16_2 = " "
intitule16_3 = " "
intitule17_1 = " "
intitule17_2 = " "
intitule17_3 = " "
intitule18_1 = " "
intitule18_2 = " "
intitule18_3 = " "
intitule19_1 = " "
intitule19_2 = " "
intitule19_3 = " "
intitule20_1 = " "
intitule20_2 = " "
intitule20_3 = " "
intitule21_1 = " "
intitule21_2 = " "
intitule21_3 = " "
intitule22_1 = " "
intitule22_2 = " "
intitule22_3 = " "
intitule23_1 = " "
intitule23_2 = " "
intitule23_3 = " "
intitule24_1 = " "
intitule24_2 = " "
intitule24_3 = " "
intitule25_1 = " "
intitule25_2 = " "
intitule25_3 = " "
intitule26_1 = " "
intitule26_2 = " "
intitule26_3 = " "
intitule27_1 = " "
intitule27_2 = " "
intitule27_3 = " "
intitule28_1 = " "
intitule28_2 = " "
intitule28_3 = " "
intitule29_1 = " "
intitule29_2 = " "
intitule29_3 = " "
intitule30_1 = " "
intitule30_2 = " "
intitule30_3 = " "
ddedebut = 0
ddefin = 0
ddebutorganisme = 0
dfinorganisme = 0
soldeprecedent = 0
CreerDecompte.Hide
Index = Choixprotege.ListIndex
numindex = Index
Choixprotege = Choixprotege.List(Index)
numeropro = Worksheets("Actifs").Range(("A") & (6 + numindex))
annee = Year(Date)
annee1 = (Year(Date)) - 1
'Dans le cas où il n'y a qu'un seul enregistrement dans "Proteges", la valeur de Choixprotege est Null si l'utilisateur clique sur une ligne vide. A partir de 2 enregistrements c'est bon
If IsNull(Choixprotege) Then
Exit Sub
End If
'Transfert du n°de protégé choisi dans la cellule A5 de la Feuille Variables pour relation entre le décompte et Directeur.xlsm pour échange de données et calcul des prélèvements
Sheets("Variables").Select
Sheets("Variables").Unprotect ("ElPasoTx67110")
Range("A5").Value = numeropro
Sheets("Variables").Protect ("ElPasoTx67110")
Sheets("PAccueil").Select
'Ouverture du fichier
nomfichier = Choixprotege
nombdd = ("C:\TutelSoft\") & numeropro & (".xlsm")
'Si le décompte existe, on ouvre le décompte
If Dir(nombdd) <> "" Then
Set bdd = Workbooks.Open(nombdd)
Sheets("Décompte").Select
Range("A83").Select
Else
'Si le décompte n'existe pas, on regarde s'il existe dans l'archive de l'année en cours - 1
nombdd2 = ("C:\TutelSoft\Archives\") & annee1 & ("\") & numeropro & (".xlsm")
If Dir(nombdd2) <> vbNullString Then
'____________________________________________________________________________________________________________________________
CreerUnDecompte = MsgBox("Le décompte de " & nomfichier & " va être crée à partir de l'archive de " & annee1 & " ! Tapez Oui pour valider, Non pour annuler", vbYesNo + vbQuestion, "Création d'un décompte")
If CreerUnDecompte = vbYes Then
'____________________________________________________________________________________________________________________________
'Chargement de l'userform pour information utilisateur
' UFInfoCreation.Show 0
' DoEvents
FileCopy ("C:\TutelSoft\Archives\") & annee1 & ("\") & numeropro & (".xlsm"), ("C:\TutelSoft\") & numeropro & (".xlsm")
nombdd = ("C:\TutelSoft\") & numeropro & (".xlsm")
Set bdd1 = Workbooks.Open(nombdd)
'____________________________________________________________________________________________________________________________
Sheets("Décompte").Select
Sheets("Décompte").Unprotect ("ElPasoTx67110")
valeursoldes1 = Range("I508").Value
valeursoldes2 = Range("I511").Value
valeursoldes3 = Range("I514").Value
valeursoldes4 = Range("I517").Value
valeursoldes5 = Range("I520").Value
valeursoldes6 = Range("I523").Value
valeursoldes7 = Range("I526").Value
valeursoldes8 = Range("I529").Value
valeursoldes9 = Range("I532").Value
valeursoldes10 = Range("I535").Value
valeursoldes11 = Range("I538").Value
valeursoldes12 = Range("I541").Value
valeursoldes13 = Range("I544").Value
valeursoldes14 = Range("I547").Value
valeursoldes15 = Range("I550").Value
valeursoldes16 = Range("I553").Value
valeursoldes17 = Range("I556").Value
valeursoldes18 = Range("I559").Value
valeursoldes19 = Range("I562").Value
valeursoldes20 = Range("I565").Value
valeursoldes21 = Range("I568").Value
valeursoldes22 = Range("I577").Value
valeursoldes23 = Range("I580").Value
valeursoldes24 = Range("I583").Value
valeursoldes25 = Range("I586").Value
valeursoldes26 = Range("I589").Value
valeursoldes27 = Range("I592").Value
valeursoldes28 = Range("I595").Value
valeursoldes29 = Range("I598").Value
valeursoldes30 = Range("I601").Value
intitule1_1 = Range("A507").Value
intitule1_2 = Range("A508").Value
intitule1_3 = Range("A509").Value
intitule2_1 = Range("A510").Value
intitule2_2 = Range("A511").Value
intitule2_3 = Range("A512").Value
intitule3_1 = Range("A513").Value
intitule3_2 = Range("A514").Value
intitule3_3 = Range("A515").Value
intitule4_1 = Range("A516").Value
intitule4_2 = Range("A517").Value
intitule4_3 = Range("A518").Value
intitule5_1 = Range("A519").Value
intitule5_2 = Range("A520").Value
intitule5_3 = Range("A521").Value
intitule6_1 = Range("A522").Value
intitule6_2 = Range("A523").Value
intitule6_3 = Range("A524").Value
intitule7_1 = Range("A525").Value
intitule7_2 = Range("A526").Value
intitule7_3 = Range("A527").Value
intitule8_1 = Range("A528").Value
intitule8_2 = Range("A529").Value
intitule8_3 = Range("A530").Value
intitule9_1 = Range("A531").Value
intitule9_2 = Range("A532").Value
intitule9_3 = Range("A533").Value
intitule10_1 = Range("A534").Value
intitule10_2 = Range("A535").Value
intitule10_3 = Range("A536").Value
intitule11_1 = Range("A537").Value
intitule11_2 = Range("A538").Value
intitule11_3 = Range("A539").Value
intitule12_1 = Range("A540").Value
intitule12_2 = Range("A541").Value
intitule12_3 = Range("A542").Value
intitule13_1 = Range("A543").Value
intitule13_2 = Range("A544").Value
intitule13_3 = Range("A545").Value
intitule14_1 = Range("A546").Value
intitule14_2 = Range("A547").Value
intitule14_3 = Range("A548").Value
intitule15_1 = Range("A549").Value
intitule15_2 = Range("A550").Value
intitule15_3 = Range("A551").Value
intitule16_1 = Range("A552").Value
intitule16_2 = Range("A553").Value
intitule16_3 = Range("A554").Value
intitule17_1 = Range("A555").Value
intitule17_2 = Range("A556").Value
intitule17_3 = Range("A557").Value
intitule18_1 = Range("A558").Value
intitule18_2 = Range("A559").Value
intitule18_3 = Range("A560").Value
intitule19_1 = Range("A561").Value
intitule19_2 = Range("A562").Value
intitule19_3 = Range("A563").Value
intitule20_1 = Range("A564").Value
intitule20_2 = Range("A565").Value
intitule20_3 = Range("A566").Value
intitule21_1 = Range("A567").Value
intitule21_2 = Range("A568").Value
intitule21_3 = Range("A569").Value
intitule22_1 = Range("A576").Value
intitule22_2 = Range("A577").Value
intitule22_3 = Range("A578").Value
intitule23_1 = Range("A579").Value
intitule23_2 = Range("A580").Value
intitule23_3 = Range("A581").Value
intitule24_1 = Range("A582").Value
intitule24_2 = Range("A583").Value
intitule24_3 = Range("A584").Value
intitule25_1 = Range("A585").Value
intitule25_2 = Range("A586").Value
intitule25_3 = Range("A587").Value
intitule26_1 = Range("A588").Value
intitule26_2 = Range("A589").Value
intitule26_3 = Range("A590").Value
intitule27_1 = Range("A591").Value
intitule27_2 = Range("A592").Value
intitule27_3 = Range("A593").Value
intitule28_1 = Range("A594").Value
intitule28_2 = Range("A595").Value
intitule28_3 = Range("A596").Value
intitule29_1 = Range("A597").Value
intitule29_2 = Range("A598").Value
intitule29_3 = Range("A599").Value
intitule30_1 = Range("A600").Value
intitule30_2 = Range("A601").Value
intitule30_3 = Range("A602").Value
Range("D82").Select
ddedebut = Range("D82").Value
Range("H82").Select
ddefin = Range("H82").Value
Range("D77").Select
ddebutorganisme = Range("D77").Value
Range("D78").Select
dfinorganisme = Range("D78").Value
'-----------------------------------------------
soldeprecedent = Range("I334").Value
'-----------------------------------------------
Application.DisplayAlerts = False
Workbooks(numeropro & (".xlsm")).Close
Application.DisplayAlerts = True
Kill ("C:\TutelSoft\") & numeropro & (".xlsm")
FileCopy ("C:\TutelSoft\9999999.xlsm"), ("C:\TutelSoft\") & numeropro & (".xlsm")
Set bdd1 = Workbooks.Open(nombdd)
'_______________________________________________________________________________________________________________________________
Sheets("C1").Select
Sheets("C1").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes1
Sheets("C1").Protect ("ElPasoTx67110")
Sheets("C2").Select
Sheets("C2").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes2
Sheets("C2").Protect ("ElPasoTx67110")
Sheets("C3").Select
Sheets("C3").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes3
Sheets("C3").Protect ("ElPasoTx67110")
Sheets("C4").Select
Sheets("C4").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes4
Sheets("C4").Protect ("ElPasoTx67110")
Sheets("C5").Select
Sheets("C5").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes5
Sheets("C5").Protect ("ElPasoTx67110")
Sheets("C6").Select
Sheets("C6").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes6
Sheets("C6").Protect ("ElPasoTx67110")
Sheets("C7").Select
Sheets("C7").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes7
Sheets("C7").Protect ("ElPasoTx67110")
Sheets("C8").Select
Sheets("C8").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes8
Sheets("C8").Protect ("ElPasoTx67110")
Sheets("C9").Select
Sheets("C9").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes9
Sheets("C9").Protect ("ElPasoTx67110")
Sheets("C10").Select
Sheets("C10").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes10
Sheets("C10").Protect ("ElPasoTx67110")
Sheets("C11").Select
Sheets("C11").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes11
Sheets("C11").Protect ("ElPasoTx67110")
Sheets("C12").Select
Sheets("C12").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes12
Sheets("C12").Protect ("ElPasoTx67110")
Sheets("C13").Select
Sheets("C13").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes13
Sheets("C13").Protect ("ElPasoTx67110")
Sheets("C14").Select
Sheets("C14").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes14
Sheets("C14").Protect ("ElPasoTx67110")
Sheets("C15").Select
Sheets("C15").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes15
Sheets("C15").Protect ("ElPasoTx67110")
Sheets("C16").Select
Sheets("C16").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes16
Sheets("C16").Protect ("ElPasoTx67110")
Sheets("C17").Select
Sheets("C17").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes17
Sheets("C17").Protect ("ElPasoTx67110")
Sheets("C18").Select
Sheets("C18").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes18
Sheets("C18").Protect ("ElPasoTx67110")
Sheets("C19").Select
Sheets("C19").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes19
Sheets("C19").Protect ("ElPasoTx67110")
Sheets("C20").Select
Sheets("C20").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes20
Sheets("C20").Protect ("ElPasoTx67110")
Sheets("C21").Select
Sheets("C21").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes21
Sheets("C21").Protect ("ElPasoTx67110")
Sheets("C22").Select
Sheets("C22").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes22
Sheets("C22").Protect ("ElPasoTx67110")
Sheets("C23").Select
Sheets("C23").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes23
Sheets("C23").Protect ("ElPasoTx67110")
Sheets("C24").Select
Sheets("C24").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes24
Sheets("C24").Protect ("ElPasoTx67110")
Sheets("C25").Select
Sheets("C25").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes25
Sheets("C25").Protect ("ElPasoTx67110")
Sheets("C26").Select
Sheets("C26").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes26
Sheets("C26").Protect ("ElPasoTx67110")
Sheets("C27").Select
Sheets("C27").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes27
Sheets("C27").Protect ("ElPasoTx67110")
Sheets("C28").Select
Sheets("C28").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes28
Sheets("C28").Protect ("ElPasoTx67110")
Sheets("C29").Select
Sheets("C29").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes29
Sheets("C29").Protect ("ElPasoTx67110")
Sheets("C30").Select
Sheets("C30").Unprotect ("ElPasoTx67110")
Range("F2").Select
Range("F2").Value = valeursoldes30
Sheets("C30").Protect ("ElPasoTx67110")
Sheets("Décompte").Select
'---------------------------------------------------------
Sheets("Décompte").Unprotect ("ElPasoTx67110")
'---------------------------------------------------------
Range("D82").Value = ddefin + 1
Range("H82").Value = CDate("31/12/" & Year(Date))
Range("A507").Value = intitule1_1
Range("A508").Value = intitule1_2
Range("A509").Value = intitule1_3
Range("A510").Value = intitule2_1
Range("A511").Value = intitule2_2
Range("A512").Value = intitule2_3
Range("A513").Value = intitule3_1
Range("A514").Value = intitule3_2
Range("A515").Value = intitule3_3
Range("A516").Value = intitule4_1
Range("A517").Value = intitule4_2
Range("A518").Value = intitule4_3
Range("A519").Value = intitule5_1
Range("A520").Value = intitule5_2
Range("A521").Value = intitule5_3
Range("A522").Value = intitule6_1
Range("A523").Value = intitule6_2
Range("A524").Value = intitule6_3
Range("A525").Value = intitule7_1
Range("A526").Value = intitule7_2
Range("A527").Value = intitule7_3
Range("A528").Value = intitule8_1
Range("A529").Value = intitule8_2
Range("A530").Value = intitule8_3
Range("A531").Value = intitule9_1
Range("A532").Value = intitule9_2
Range("A533").Value = intitule9_3
Range("A534").Value = intitule10_1
Range("A535").Value = intitule10_2
Range("A536").Value = intitule10_3
Range("A537").Value = intitule11_1
Range("A538").Value = intitule11_2
Range("A539").Value = intitule11_3
Range("A540").Value = intitule12_1
Range("A541").Value = intitule12_2
Range("A542").Value = intitule12_3
Range("A543").Value = intitule13_1
Range("A544").Value = intitule13_2
Range("A545").Value = intitule13_3
Range("A546").Value = intitule14_1
Range("A547").Value = intitule14_2
Range("A548").Value = intitule14_3
Range("A549").Value = intitule15_1
Range("A550").Value = intitule15_2
Range("A551").Value = intitule15_3
Range("A552").Value = intitule16_1
Range("A553").Value = intitule16_2
Range("A554").Value = intitule16_3
Range("A555").Value = intitule17_1
Range("A556").Value = intitule17_2
Range("A557").Value = intitule17_3
Range("A558").Value = intitule18_1
Range("A559").Value = intitule18_2
Range("A560").Value = intitule18_3
Range("A561").Value = intitule19_1
Range("A562").Value = intitule19_2
Range("A563").Value = intitule19_3
Range("A564").Value = intitule20_1
Range("A565").Value = intitule20_2
Range("A566").Value = intitule20_3
Range("A567").Value = intitule21_1
Range("A568").Value = intitule21_2
Range("A569").Value = intitule21_3
Range("A576").Value = intitule22_1
Range("A577").Value = intitule22_2
Range("A578").Value = intitule22_3
Range("A579").Value = intitule23_1
Range("A580").Value = intitule23_2
Range("A581").Value = intitule23_3
Range("A582").Value = intitule24_1
Range("A583").Value = intitule24_2
Range("A584").Value = intitule24_3
Range("A585").Value = intitule25_1
Range("A586").Value = intitule25_2
Range("A587").Value = intitule25_3
Range("A588").Value = intitule26_1
Range("A589").Value = intitule26_2
Range("A590").Value = intitule26_3
Range("A591").Value = intitule27_1
Range("A592").Value = intitule27_2
Range("A593").Value = intitule27_3
Range("A594").Value = intitule28_1
Range("A595").Value = intitule28_2
Range("A596").Value = intitule28_3
Range("A597").Value = intitule29_1
Range("A598").Value = intitule29_2
Range("A599").Value = intitule29_3
Range("A600").Value = intitule30_1
Range("A601").Value = intitule30_2
Range("A602").Value = intitule30_3
'-----------------------------------------------
Range("F339").Value = soldeprecedent
'-----------------------------------------------
If ddebutorganisme > 1 Then
Range("D77").Value = ddebutorganisme
Else
Range("D77").Value = ""
End If
If dfinorganisme > 1 Then
Range("D78").Value = dfinorganisme
Else
Range("D78").Value = ""
End If
'Déchargement de l'userform d'information utilisateur
Unload UFInfoCreation
Sheets("Décompte").Protect ("ElPasoTx67110")
Range("A83").Select
Workbooks(numeropro & (".xlsm")).Save
'___________________________________________________________________________________________________________________________
' Si l'utilisateur ne veux pas créer le décompte
Else
MsgBox "Le décompte n'a pas été créé!", vbInformation
End If
'___________________________________________________________________________________________________________________________
' Si le décompte n'existe pas dans l'année N-1
Else
'Sinon, on ouvre un décompte en copiant le décompte maître 9999999.xlsm
CreerUnDecompte = MsgBox("Le décompte de " & nomfichier & " n'existe pas! Voulez-vous créer son décompte de gestion ?", vbYesNo + vbQuestion, "Création d'un décompte")
If CreerUnDecompte = vbYes Then
'-------Chargement de l'userform pour information utilisateur
UFInfoCreation.Show 0
DoEvents
FileCopy ("C:\TutelSoft\9999999.xlsm"), ("C:\TutelSoft\") & numeropro & (".xlsm")
nombdd3 = ("C:\TutelSoft\") & numeropro & (".xlsm")
Set bdd3 = Workbooks.Open(nombdd)
'-------Déchargement de l'userform d'information utilisateur
Unload UFInfoCreation
Sheets("Décompte").Select
Sheets("Décompte").Protect ("ElPasoTx67110")
Range("D82").Select
Range("D82").Value = Date
Range("H82").Value = CDate("31/12/" & Year(Date))
Range("A83").Select
Workbooks(numeropro & (".xlsm")).Save
Else
MsgBox "Le décompte n'a pas été créé!", vbInformation
End If
End If
End If
Application.ScreenUpdating = True
End SubMerci
Cordialement
Joseph
Bonsoir
Utilises des tableaux cela sera plus facile à initialiser
Avec ton fichier cela sera encore plus aisée de te trouver une solution (enfin je crois)
Bonjour
Une première étude, mais sans matériel pas évident du résultat
Option Explicit
Private Sub UserForm_Activate()
Dim DernierProtege As String
Application.ScreenUpdating = False
' LDProtegesActifs
DernierProtege = Worksheets("Actifs").Range("B6").End(xlDown).Address
'Sélection de la plage de données à afficher dans la liste déroulante
'Choixprotege = nom zone du UserForm ListeDeroulante dans laquelle s'affichent les protégés
Choixprotege.RowSource = "Actifs!B6:" & DernierProtege
'Affichage à chaque ouverture du 1er protégé de la liste
Choixprotege.ListIndex = 0
'et focus sur le nom du protégé
Choixprotege.SetFocus
'Affichage de la page d'accueil
Sheets("PAccueil").Select
Application.ScreenUpdating = True
End Sub
Private Sub Annuler_Click()
Unload CreerDecompte
End Sub
Private Sub Valider_Click()
Dim nombdd As String
Dim nombdd2 As String
Dim nomfichier As String
Dim numeropro As String
Dim numindex As String
Dim J As Long
Dim I As Integer
Dim Indice As Integer
Dim ValeurSolde(29) As Currency
Dim Intitule(29, 2) As String
Dim annee
Dim annee1
Dim ddedebut As Date
Dim ddefin As Date
Dim ddebutorganisme As Date
Dim dfinorganisme As Date
Dim CreerUnDecompte As Integer
'--------------------------------------
Dim soldeprecedent As Currency
'--------------------------------------
Application.ScreenUpdating = False
ddedebut = 0
ddefin = 0
ddebutorganisme = 0
dfinorganisme = 0
soldeprecedent = 0
Dim Index As Integer
CreerDecompte.Hide
Index = Choixprotege.ListIndex
numindex = Index
Choixprotege = Choixprotege.List(Index)
numeropro = Worksheets("Actifs").Range(("A") & (6 + numindex))
annee = Year(Date)
annee1 = (Year(Date)) - 1
'Dans le cas où il n'y a qu'un seul enregistrement dans "Proteges", la valeur de Choixprotege est Null si l'utilisateur clique sur une ligne vide. A partir de 2 enregistrements c'est bon
If IsNull(Choixprotege) Then
Exit Sub
End If
For J = 0 To 29
ValeurSolde(J) = 0
Next J
For J = 0 To 29
For I = 0 To 2
Intitule(J, I) = " "
Next I
Next J
'Transfert du n°de protégé choisi dans la cellule A5 de la Feuille Variables pour relation entre le décompte et Directeur.xlsm pour échange de données et calcul des prélèvements
With Sheets("Variables")
.Unprotect ("ElPasoTx67110")
.Range("A5").Value = numeropro
.Protect ("ElPasoTx67110")
End With
Sheets("PAccueil").Select
'Ouverture du fichier
nomfichier = Choixprotege
nombdd = ("C:\TutelSoft\") & numeropro & (".xlsm")
If Dir(nombdd) <> "" Then
' Si le décompte existe, on ouvre le décompte
Workbooks.Open nombdd
Application.Goto Sheets("Décompte").Range("A83")
Else
'Si le décompte n'existe pas, on regarde s'il existe dans l'archive de l'année en cours - 1
nombdd2 = ("C:\TutelSoft\Archives\") & annee1 & ("\") & numeropro & (".xlsm")
If Dir(nombdd2) <> vbNullString Then
'____________________________________________________________________________________________________________________________
CreerUnDecompte = MsgBox("Le décompte de " & nomfichier & " va être crée à partir de l'archive de " & annee1 & " ! Tapez Oui pour valider, Non pour annuler", vbYesNo + vbQuestion, "Création d'un décompte")
If CreerUnDecompte = vbYes Then
'____________________________________________________________________________________________________________________________
'Chargement de l'userform pour information utilisateur
' UFInfoCreation.Show 0
' DoEvents
FileCopy ("C:\TutelSoft\Archives\") & annee1 & ("\") & numeropro & (".xlsm"), ("C:\TutelSoft\") & numeropro & (".xlsm")
nombdd = ("C:\TutelSoft\") & numeropro & (".xlsm")
Workbooks.Open nombdd
'____________________________________________________________________________________________________________________________
With Sheets("Décompte")
.Unprotect ("ElPasoTx67110")
Indice = 0
For J = 508 To 601 Step 3
ValeurSolde(Indice) = Range("I" & J)
Indice = Indice + 1
Next J
Indice = 0
For J = 507 To 600 Step 3
For I = 0 To 2
Intitule(Indice, I) = Range("A" & J + I)
Next I
Indice = Indice + 1
Next J
ddedebut = .Range("D82").Value
ddefin = .Range("H82").Value
ddebutorganisme = .Range("D77").Value
dfinorganisme = .Range("D78").Value
soldeprecedent = .Range("I334").Value
End With
'-----------------------------------------------
Workbooks(numeropro & (".xlsm")).Close savechanges:=False ' Ignore les modifications
Kill ("C:\TutelSoft\") & numeropro & (".xlsm") ' Détruit le fichier !!!!!!
FileCopy ("C:\TutelSoft\9999999.xlsm"), ("C:\TutelSoft\") & numeropro & (".xlsm")
'_______________________________________________________________________________________________________________________________
Workbooks.Open nombdd
For J = 1 To 30
With Sheets("C" & J)
.Unprotect ("ElPasoTx67110")
.Range("F2") = ValeurSolde(J - 1)
.Protect ("ElPasoTx67110")
End With
Next J
With Sheets("Décompte")
.Unprotect ("ElPasoTx67110")
.Range("D82").Value = ddefin + 1
.Range("H82").Value = CDate("31/12/" & Year(Date))
Indice = 0
For J = 507 To 600 Step 3
For I = 0 To 2
.Range("A" & J + I) = Intitule(Indice, I) = Range("A" & J + I)
Next I
Indice = Indice + 1
Next J
.Range("F339").Value = soldeprecedent
If ddebutorganisme > 1 Then
.Range("D77").Value = ddebutorganisme
Else
.Range("D77").Value = ""
End If
If dfinorganisme > 1 Then
.Range("D78").Value = dfinorganisme
Else
.Range("D78").Value = ""
End If
'Déchargement de l'userform d'information utilisateur
'Unload UFInfoCreation
.Protect ("ElPasoTx67110")
End With
Application.Goto Sheets("Décompte").Range("A83")
Workbooks(numeropro & (".xlsm")).Save
'___________________________________________________________________________________________________________________________
' Si l'utilisateur ne veux pas créer le décompte
Else
MsgBox "Le décompte n'a pas été créé!", vbInformation
End If
'___________________________________________________________________________________________________________________________
' Si le décompte n'existe pas dans l'année N-1
Else
'Sinon, on ouvre un décompte en copiant le décompte maître 9999999.xlsm
CreerUnDecompte = MsgBox("Le décompte de " & nomfichier & " n'existe pas! Voulez-vous créer son décompte de gestion ?", vbYesNo + vbQuestion, "Création d'un décompte")
If CreerUnDecompte = vbYes Then
'-------Chargement de l'userform pour information utilisateur
'UFInfoCreation.Show 0
'DoEvents
FileCopy ("C:\TutelSoft\9999999.xlsm"), ("C:\TutelSoft\") & numeropro & (".xlsm")
Workbooks.Open nombdd
'-------Déchargement de l'userform d'information utilisateur
'Unload UFInfoCreation
With Sheets("Décompte")
.Protect ("ElPasoTx67110")
.Range("D82") = Date
.Range("H82") = CDate("31/12/" & Year(Date))
End With
Application.Goto Sheets("Décompte").Range("A83")
Workbooks(numeropro & (".xlsm")).Save
Else
MsgBox "Le décompte n'a pas été créé!", vbInformation
End If
End If
End If
Application.ScreenUpdating = True
End SubBonjour,
J'en étais à peu près au même stade de réflexion...
Le problème est que la plage est discontinue avec une interruption à hauteur des lignes 568/577
Donc
For J = 508 To 601 Step 3
... génère 32 appels et non 30. Ce qui devrait générer des erreurs de type 9
En d'autre terme tes Array devraient comporter 32 éléments dont 2 inutiles
Il n'est d'ailleurs pas certain que la correction suffise pour ValeurSolde qui est Currency : Si les éléments inutiles (21 et 22) sont des String ça risque de coincer...
Nota :
Les boucles :
For J = 0 To 29
ValeurSolde(J) = 0
Next J
For J = 0 To 29
For I = 0 To 2
Intitule(J, I) = " "
Next I
Next J
...semblent inutiles ces valeurs ne semblent pas utilisées !
A+
Bonjour Banzai64, galopin, le forum,
Tout d'abord, je vous remercie de vous intéresser à mon post.
Je voudrais bien joindre le fichier type et un fichier exemple, mais même en .zip, ils dépassent chacun les 700ko.
Peut-être en vous envoyant un mail avec votre accord évidemment, mais celà ne figurera alors pas dans ce post.
Sinon, chaque intitulé possede 3 lignes et il y en a 30 (donc 90 au total), et la valeur des soldes (30 au total) est un nombre positif ou négatif à 2 decimales.
Concernant les boucles d'initialisation des variables, sont-elles inutiles ? D'après mes connaissances livresques, il faut les initialiser, mais d'après ce que dit galopin elles ne servent pas.
Je ne comprends pas tes autres remarques, ça me dépasse !!
Enfin, vous avez bien remarqué que la plage est discontinue. Ne pourrait-on pas alors faire 2 fois 2 boucles ?
Les intitulés vont de A507 à A569 puis de A576 à A602; les soldes de I508 à I568 avec 1 écart de 3 (508,511,514....568) puis de I577 à I601 avec 1 écart de 3 (577,580,583,...601).
Encore merci de votre aide.
Amicalement
Joseph
Bonjour
Oui c'est vrai je n'ai pas trop cherché
J'ai juste vu comment arrangé la sauce
La coupure je ne l'ai pas vue
Ton fichier tu peux le joindre avec Cijoint
Bonjour Banzai64, galopin, le forum,
Gràce à ton lien, voici un fichier exemple 1111111.xlsm ainsi que le fichier "type" 9999999.xlsm
Le fichier "type" est aujourd'hui entièrement remodelé, mais si la macro fonctionne avec l'ancien qui est dans le lien, je réussirai à la faire fonctionner avec le nouveau fichier "type". Ce sont les positions des intitulés et des valeurs solde qui changent.
J'ai pensé qu'en prenant les anciens modèles où les positions sont les mêmes, ce serait plus facile à réaliser.
Amicalement
Joseph
Bonjour
J'ai un petit souci avec les liens
J'obtiens seulement des hiéroglyphes
Impossible de les télécharger
Bonjour Banzai64, le forum,
Peut-être parce que les fichiers sont en .xlsm ?
J'ai réessayé via Cjoint, mais je n'arrive pas à afficher la 2e page!!! Ou alors c'est parce que ce sont les mêmes fichiers que je souhaite remettre ?
L'application entière fait plus de 3MO.
Ci-après un fichier exemple compressé dans lequel tout a été supprimé sauf les 2 feuilles avec les intitulés et les soldes.
J'ai également supprimé les onglets de C3 à C29 en ne laissant que C1, C2 et C30
Ce n'est pas grand chose, mais celà permattra de voir ce à quoi tout celà ressemble.
Merci beaucoup
Amicalement
Joseph
Bonjour,
Tu peux essayer comme ça :
Private Sub Valider_Click()
Dim nombdd As String
Dim nombdd2 As String
Dim nomfichier As String
Dim numeropro As String
Dim numindex As String
Dim J As Long
Dim I As Integer
Dim Indice As Integer
Dim ValeurSolde(29) As Currency
Dim Intitule(29, 2) As String
Dim annee
Dim annee1
Dim ddedebut As Date
Dim ddefin As Date
Dim ddebutorganisme As Date
Dim dfinorganisme As Date
Dim CreerUnDecompte As Integer
'--------------------------------------
Dim soldeprecedent As Currency
'--------------------------------------
Application.ScreenUpdating = False
ddedebut = 0
ddefin = 0
ddebutorganisme = 0
dfinorganisme = 0
soldeprecedent = 0
Dim Index As Integer
CreerDecompte.Hide
Index = Choixprotege.ListIndex
numindex = Index
Choixprotege = Choixprotege.List(Index)
numeropro = Worksheets("Actifs").Range(("A") & (6 + numindex))
annee = Year(Date)
annee1 = (Year(Date)) - 1
'Dans le cas où il n'y a qu'un seul enregistrement dans "Proteges", la valeur de Choixprotege est Null si l'utilisateur clique sur une ligne vide. A partir de 2 enregistrements c'est bon
If IsNull(Choixprotege) Then
Exit Sub
End If
' Inutile
' For J = 0 To 29
' ValeurSolde(J) = 0
' Next J
'
' For J = 0 To 29
' For I = 0 To 2
' Intitule(J, I) = " "
' Next I
' Next J
'Transfert du n°de protégé choisi dans la cellule A5 de la Feuille Variables pour relation entre le décompte et Directeur.xlsm pour échange de données et calcul des prélèvements
With Sheets("Variables")
.Unprotect ("ElPasoTx67110")
.Range("A5").Value = numeropro
.Protect ("ElPasoTx67110")
End With
Sheets("PAccueil").Select
'Ouverture du fichier
nomfichier = Choixprotege
nombdd = ("C:\TutelSoft\") & numeropro & (".xlsm")
If Dir(nombdd) <> "" Then
' Si le décompte existe, on ouvre le décompte
Workbooks.Open nombdd
Application.Goto Sheets("Décompte").Range("A83")
Else
'Si le décompte n'existe pas, on regarde s'il existe dans l'archive de l'année en cours - 1
nombdd2 = ("C:\TutelSoft\Archives\") & annee1 & ("\") & numeropro & (".xlsm")
If Dir(nombdd2) <> vbNullString Then
'____________________________________________________________________________________________________________________________
CreerUnDecompte = MsgBox("Le décompte de " & nomfichier & " va être crée à partir de l'archive de " & annee1 & " ! Tapez Oui pour valider, Non pour annuler", vbYesNo + vbQuestion, "Création d'un décompte")
If CreerUnDecompte = vbYes Then
'____________________________________________________________________________________________________________________________
'Chargement de l'userform pour information utilisateur
' UFInfoCreation.Show 0
' DoEvents
FileCopy ("C:\TutelSoft\Archives\") & annee1 & ("\") & numeropro & (".xlsm"), ("C:\TutelSoft\") & numeropro & (".xlsm")
nombdd = ("C:\TutelSoft\") & numeropro & (".xlsm")
Workbooks.Open nombdd
'____________________________________________________________________________________________________________________________
With Sheets("Décompte")
.Unprotect ("ElPasoTx67110")
''''''''''''''''''''Chargement ValeurSolde 2 zones
Indice = 0
For J = 508 To 568 Step 3
ValeurSolde(Indice) = Range("I" & J)
Indice = Indice + 1
Next J
For J = 577 To 601 Step 3
ValeurSolde(Indice) = Range("I" & J)
Indice = Indice + 1
Next J
''''''''''''''''''''Chargement Intitule 2 zones
Indice = 0
For J = 507 To 567 Step 3
For I = 0 To 2
Intitule(Indice, I) = Range("A" & J + I)
Next I
Indice = Indice + 1
Next J
For J = 576 To 600 Step 3
For I = 0 To 2
Intitule(Indice, I) = Range("A" & J + I)
Next I
Indice = Indice + 1
Next J
''''''''''''''''''''
ddedebut = .Range("D82").Value
ddefin = .Range("H82").Value
ddebutorganisme = .Range("D77").Value
dfinorganisme = .Range("D78").Value
soldeprecedent = .Range("I334").Value
End With
'-----------------------------------------------
Workbooks(numeropro & (".xlsm")).Close savechanges:=False ' Ignore les modifications
Kill ("C:\TutelSoft\") & numeropro & (".xlsm") ' Détruit le fichier !!!!!!
FileCopy ("C:\TutelSoft\9999999.xlsm"), ("C:\TutelSoft\") & numeropro & (".xlsm")
'_______________________________________________________________________________________________________________________________
Workbooks.Open nombdd
For J = 1 To 30
With Sheets("C" & J)
.Unprotect ("ElPasoTx67110")
.Range("F2") = ValeurSolde(J - 1)
.Protect ("ElPasoTx67110")
End With
Next J
With Sheets("Décompte")
.Unprotect ("ElPasoTx67110")
.Range("D82").Value = ddefin + 1
.Range("H82").Value = CDate("31/12/" & Year(Date))
''''''''''''''''''''Restitution 2 zones
Indice = 0
For J = 507 To 567 Step 3
For I = 0 To 2
.Range("A" & J + I) = Intitule(Indice, I) = Range("A" & J + I)
Next I
Indice = Indice + 1
Next J
For J = 576 To 600 Step 3
For I = 0 To 2
.Range("A" & J + I) = Intitule(Indice, I) = Range("A" & J + I)
Next I
Indice = Indice + 1
Next J
''''''''''''''''''''''''''''''''''''''''
.Range("F339").Value = soldeprecedent
If ddebutorganisme > 1 Then
.Range("D77").Value = ddebutorganisme
Else
.Range("D77").Value = ""
End If
If dfinorganisme > 1 Then
.Range("D78").Value = dfinorganisme
Else
.Range("D78").Value = ""
End If
'Déchargement de l'userform d'information utilisateur
'Unload UFInfoCreation
.Protect ("ElPasoTx67110")
End With
Application.Goto Sheets("Décompte").Range("A83")
Workbooks(numeropro & (".xlsm")).Save
'___________________________________________________________________________________________________________________________
' Si l'utilisateur ne veux pas créer le décompte
Else
MsgBox "Le décompte n'a pas été créé!", vbInformation
End If
'___________________________________________________________________________________________________________________________
' Si le décompte n'existe pas dans l'année N-1
Else
'Sinon, on ouvre un décompte en copiant le décompte maître 9999999.xlsm
CreerUnDecompte = MsgBox("Le décompte de " & nomfichier & " n'existe pas! Voulez-vous créer son décompte de gestion ?", vbYesNo + vbQuestion, "Création d'un décompte")
If CreerUnDecompte = vbYes Then
'-------Chargement de l'userform pour information utilisateur
'UFInfoCreation.Show 0
'DoEvents
FileCopy ("C:\TutelSoft\9999999.xlsm"), ("C:\TutelSoft\") & numeropro & (".xlsm")
Workbooks.Open nombdd
'-------Déchargement de l'userform d'information utilisateur
'Unload UFInfoCreation
With Sheets("Décompte")
.Protect ("ElPasoTx67110")
.Range("D82") = Date
.Range("H82") = CDate("31/12/" & Year(Date))
End With
Application.Goto Sheets("Décompte").Range("A83")
Workbooks(numeropro & (".xlsm")).Save
Else
MsgBox "Le décompte n'a pas été créé!", vbInformation
End If
End If
End If
Application.ScreenUpdating = True
End SubNon testé !
A+
Bonjour galopin, le forum,
Je vais essayer cà en début de soirée et te tiendrais au courant dès que.
Merci beaucoup
Amicalement
Joseph
Bonsoir galopin, banzai64, le forum,
Je n'ai pas pu résister, et j'ai essayé de suite. (et mis d'autres choses de côté : ca risque de chauffer!!!)
Pour ce qui est des soldes c'est OK.
Par contre, pour les intitulés, dans les 9 premiers j'ai FAUX, FAUX et FAUX, et pour les autres j'ai VRAI, VRAI et VRAI au lieu de chaque fois les 3 bons intitulés.
Le passage entre les 2 zones est parfait.
Mille merci
Amicalement
Joseph
Bonjour
Dans les boucles
Rajoutes un . (point) devant Range
exemple
Indice = 0
For J = 508 To 568 Step 3
ValeurSolde(Indice) = .Range("I" & J)
Indice = Indice + 1
Next J
For J = 577 To 601 Step 3
ValeurSolde(Indice) = .Range("I" & J)
Indice = Indice + 1
Next JEn principe toutes les cellules concernées par le With Sheets(....)
Bonjour galopin, banzai64, le forum,
J'ai trouvé où se situait le souci
''''''''''''''''''''Restitution 2 zones
Indice = 0
For J = 507 To 567 Step 3
For I = 0 To 2
.Range("A" & J + I) = Intitule(Indice, I) = Range("A" & J + I)
Next I
Indice = Indice + 1
Next J
For J = 576 To 600 Step 3
For I = 0 To 2
.Range("A" & J + I) = Intitule(Indice, I) = Range("A" & J + I)
Next I
Indice = Indice + 1
Next J
''''''''''''''''''''''''''''''''''''''''Dans les 2 lignes .Range("A" & J + I) = Intitule(Indice, I) = Range("A" & J + I)
j'ai ôté = Range("A" & J + I)
Du coup il me semble que c'est parfait.
Encore quelques vérifications (après ce qui est mis de côté cette fois ci) et je vous tiens informé.
Mille merci
Amicalement
Joseph
Bonsoir,
Oui bien sur... Une errreur de Copier/Coller : Je n'ai fait que pomper lamentablement le code de Banzai64 sans analyser...
Le bon code :
''''''''''''''''''''Restitution 2 zones
Indice = 0
For J = 507 To 567 Step 3
For I = 0 To 2
.Range("A" & J + I) = Intitule(Indice, I)
Next I
Indice = Indice + 1
Next J
For J = 576 To 600 Step 3
For I = 0 To 2
.Range("A" & J + I) = Intitule(Indice, I)
Next I
Indice = Indice + 1
Next J
''''''''''''''''''''''''''''''''''''''''A+
Bonsoir galopin, banzai64,
Voilà, tout roule.
Ne me reste plus qu'à transposer et adapter au nouveau fichier"type" dans lequel les intitulés et soldes sont décalés.
Merci infiniment pour votre aide précieuse.
Amicalement
Joseph