Appel d'une UserForm

Sly le globe trotter

XLDnaute Occasionnel
Bonjour à tous,

je suis confronté à des soucis quelque peu curieux et ne parviens pas à identifier la cause de mes tourments. Peut être pourrez-vous m'aider :confused:

J'ai un fichier Excel rempli de macro que j'utilise depuis plusieurs années pour faire des bilans mensuels. Jusqu'ici tout va bien et tout marchait très bien.

En voulant l'utiliser aujourd'hui, ça coince et je ne vois pas pourquoi sachant qu'encore une fois, à part des mises à jour automatiques, rien de changé sur mon PC et encore moins dans les macros du fichier...

A l’exécution du code vba, depuis un bouton du fichier Excel, la fenêtre vba s'ouvre toute seule et le code est "arrêté" comme si j'avais positionné un point d'arrêt lors de l'appel d'une userform...
Code:
Form_ChoixMoisSynth.Show

Si je relance le code, l’exécution s'arrête à nouveau sur une ligne surprenante...
Code:
For j = 12 To Limite

Si je relance à nouveau, j'ai, semble-t-il, à chaque passage dans la boucle le code qui s'arrête avec un message d'erreur : exécution interrompue. En revacnhe aucun problème si j'exécute le code pas à pas avec la touche F8 !

Voici le code, pour info
Code:
Option Explicit
Public Mois As String
Public Annee, i, j As Integer
Public PathSourcePrevYearY, PathSourceYearY, FichierSource As String
Public OngletSource As String
Public OngletDestination As String
Public CelluleSource As String
Public Chemin As String


Sub Main()

Dim wbY, wbPrevY As Workbook
Dim Limite As Integer

OngletDestination = "Synthèse annuelle chiffrée"
Limite = 853

Annee = ThisWorkbook.Sheets(OngletDestination).Cells(2, 2)
Chemin = ThisWorkbook.Sheets(OngletDestination).Cells(3, 2)

If Dir(Chemin, vbDirectory) = "" Then
    MsgBox "Le dossier indiqué en cellule B3 n'existe pas", vbOKOnly, "Information"
    Exit Sub
End If

Mois = ""
Form_ChoixMoisSynth.Show

Application.ScreenUpdating = False
If Mois <> "" Then
    ' Recherche de la colonne correspondante dans le fichier de synthèse
    For i = 12 To 56 Step 4
        If Sheets(OngletDestination).Cells(5, i) = Mois Then
            Exit For
        End If
    Next i
        
    ' Construction du nom des chemins des fichiers sources
    With Sheets(OngletDestination)
        PathSourceYearY = Chemin & Annee & "\" & .Cells(8, i + 3) & "_" & .Cells(9, i + 3) & "_Indicateurs Tests.xlsx"
        PathSourcePrevYearY = Chemin & Annee - 1 & "\" & .Cells(6, i + 3) & "_" & .Cells(7, i + 3) & "_Indicateurs Tests.xlsx"
    End With
    
    ' Importation des données de l'année Y
    If PresenceFichier(PathSourceYearY) Then
        Set wbY = Workbooks.Open(PathSourceYearY)
        
        For j = 12 To Limite
            If ThisWorkbook.Sheets(OngletDestination).Cells(j, 3) <> "" And ThisWorkbook.Sheets(OngletDestination).Cells(j, 6) <> "" Then
                ' Onglet contenant la donnée à récupérer
                OngletSource = ThisWorkbook.Sheets(OngletDestination).Cells(j, 3)
                
                'Adresse de la cellule contenant la donnée à récupérer
                CelluleSource = ThisWorkbook.Sheets(OngletDestination).Cells(j, 6)
                
                ThisWorkbook.Sheets(OngletDestination).Cells(j, i + 1) = wbY.Sheets(OngletSource).Range(CelluleSource)
            End If
        Next j
        Application.DisplayAlerts = False
        wbY.Close
        Application.DisplayAlerts = True
        Set wbY = Nothing
    Else
        MsgBox "Le fichier " & PathSourceYearY & " n'existe pas.", vbOKOnly, "Information"
    End If
    
    ' Importation des données de l'année Y-1
    If PresenceFichier(PathSourcePrevYearY) Then
        Set wbPrevY = Workbooks.Open(PathSourcePrevYearY)
    
        For j = 12 To Limite
            If ThisWorkbook.Sheets(OngletDestination).Cells(j, 3) <> "" And ThisWorkbook.Sheets(OngletDestination).Cells(j, 6) <> "" Then
                ' Onglet contenant la donnée à récupérer
                OngletSource = ThisWorkbook.Sheets(OngletDestination).Cells(j, 3)
                
                'Adresse de la cellule contenant la donnée à récupérer
                CelluleSource = ThisWorkbook.Sheets(OngletDestination).Cells(j, 6)
                
                ThisWorkbook.Sheets(OngletDestination).Cells(j, i) = wbPrevY.Sheets(OngletSource).Range(CelluleSource)
            End If
        Next j
        Application.DisplayAlerts = False
        wbPrevY.Close
        Application.DisplayAlerts = True
        Set wbPrevY = Nothing
    Else
        MsgBox "Le fichier " & PathSourcePrevYearY & " n'existe pas.", vbOKOnly, "Information"
    End If
End If

Application.ScreenUpdating = True

End Sub

Comment cela peut-il ne plus fonctionner alors que tout allait bien il y a encore quelques jours et qu'en exécutatn pas à pas, je n'ai aucun problème ???

Merci pour votre aide,
Sly
 

Sly le globe trotter

XLDnaute Occasionnel
Re : Appel d'une UserForm

Bonjour pierrejean,

Merci pour ta réponse.
J'ai créé des dossiers avec les différents fichiers permettant de réaliser les tests. Il faut paramétrer dans le fichier Excel du dossier "test", l'adresse du dossier et cela devrait pouvoir tourner...


Merci encore,
Sly
 

Sly le globe trotter

XLDnaute Occasionnel
Re : Appel d'une UserForm

Pour compléter mon message initial, j'ai effectué plusieurs essais et le code ne "plante" pas toujours aux mêmes moments...
La valeur de "j" dans la boucle
Code:
For j = 12 To Limite
n'est pas toujours la même d'une exécution à une autre...

Sly
 

Discussions similaires

Réponses
2
Affichages
228

Statistiques des forums

Discussions
312 177
Messages
2 085 976
Membres
103 077
dernier inscrit
kamel26asus