Non non, ça marche aussi bien sur son pc que sur le mien, mais là je viens de l'installer sur un autre disque dur presque identique que le mien (où ça marche). Et là ça me met des erreurs. Voici le code :
Private Sub CommandButton1_Click()
Dim repbase, utilisateur, fichbase, annee, mois, nomfichouvert
Dim fr, l, w, e
fichbase = ActiveWorkbook.FullName
Set fr = CreateObject("Scripting.FileSystemObject")
Set l = fr.GetFile(fichbase)
repbase = l.ParentFolder.Path
On Error GoTo fin2
utilisateur = ListBox2.Text
annee = ComboBox1.Value
mois = ListBox1.Text
For Each w In Application.Workbooks
nomfichouvert = w.Name
If nomfichouvert = utilisateur & annee & ".xls" Then
MsgBox "Le fichier que vous voulez ouvrir est déjà ouvert, la commande est abandonnée"
GoTo fin3
End If
Next w
Set fr = CreateObject("Scripting.FileSystemObject")
e = fr.FileExists(repbase & "\annees\" & utilisateur & annee & ".xls")
If e = True Then
Workbooks.Open repbase & "\annees\" & utilisateur & annee & ".xls"
If mois = "" Then
GoTo suite
Else
Worksheets(mois).Activate
End If
suite:
Else
MsgBox "Désolé, fichier introuvable. Peut être que le nom du compte ou du livret vient d'être créé et n'a donc pas d'année archivée!"
GoTo fin
End If
fin3:
Unload UserForm1
Unload UserForm5
GoTo fin
fin2:
ComboBox1.Text = ""
MsgBox "Vous devez entrer une année valide"
fin:
End Sub
Private Sub CommandButton2_Click()
Dim repbase, utilisateur, fichbase, annee
Dim fr, l, e
fichbase = ActiveWorkbook.FullName
Set fr = CreateObject("Scripting.FileSystemObject")
Set l = fr.GetFile(fichbase)
repbase = l.ParentFolder.Path
utilisateur = ListBox2.Text
annee = Year(DateTime.Date)
Set fr = CreateObject("Scripting.FileSystemObject")
e = fr.FileExists(repbase & "\annees\" & utilisateur & annee & ".xls")
If e = True Then
Workbooks.Open repbase & "\annees\" & utilisateur & annee & ".xls"
Unload UserForm1
Unload UserForm5
Else
MsgBox "Désolé, l'année " & Year(DateTime.Date) & " du compte (ou du livret): " & utilisateur & " n'existe pas!"
End If
End Sub
Private Sub ListBox2_Change()
Dim x, y, compte, livret, compteoulivret
x = 2
y = 2
compte = "b" & x
livret = "e" & y
compteoulivret = "?"
While Worksheets("Comptes et livrets").Range(compte) <> ""
If Worksheets("Comptes et livrets").Range(compte) = ListBox2.Value Then compteoulivret = "Compte"
x = x + 1
compte = "b" & x
Wend
While Worksheets("Comptes et livrets").Range(livret) <> ""
If Worksheets("Comptes et livrets").Range(livret) = ListBox2.Value Then compteoulivret = "Livret"
y = y + 1
livret = "e" & y
Wend
If compteoulivret = "Compte" Then
CommandButton1.Caption = "Ouvrir Compte"
ListBox1.Enabled = True
ListBox1.Visible = True
Label2.Visible = True
ElseIf compteoulivret = "Livret" Then
CommandButton1.Caption = "Ouvrir Livret"
ListBox1.Enabled = False
ListBox1.Visible = False
Label2.Visible = False
End If
End Sub
Private Sub UserForm_Activate()
Dim annee
Dim w, x, y, compte, livret, memo
CommandButton2.Caption = "Ouvrir l'année " & Year(DateTime.Date)
annee = Year(DateTime.Date)
For w = 0 To 9
ComboBox1.AddItem (annee + 1 - w)
Next w
ComboBox1.Value = annee
ListBox1.AddItem ("Janvier")
ListBox1.AddItem ("Février")
ListBox1.AddItem ("Mars")
ListBox1.AddItem ("Avril")
ListBox1.AddItem ("Mai")
ListBox1.AddItem ("Juin")
ListBox1.AddItem ("Juillet")
ListBox1.AddItem ("Août")
ListBox1.AddItem ("Septembre")
ListBox1.AddItem ("Octobre")
ListBox1.AddItem ("Novembre")
ListBox1.AddItem ("Décembre")
x = 2
y = 2
memo = ""
compte = "b" & x
livret = "e" & y
While Worksheets("Comptes et livrets").Range(compte) <> ""
If compte = "b2" Then memo = Worksheets("Comptes et livrets").Range(compte)
ListBox2.AddItem Worksheets("Comptes et livrets").Range(compte)
x = x + 1
compte = "b" & x
Wend
While Worksheets("Comptes et livrets").Range(livret) <> ""
If memo = "" And livret = "e2" Then memo = Worksheets("Comptes et livrets").Range(livret)
ListBox2.AddItem Worksheets("Comptes et livrets").Range(livret)
y = y + 1
livret = "e" & y
Wend
If memo <> "" Then ListBox2.Value = memo
End Sub
Voici le texte surligner en jaune :
While Worksheets("Comptes et livrets").Range(livret) <> ""
Et le message d'erreur avant le débogage :
Erreur d'exécution '9' :
L'indice n'appartient pas à la selection.