IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Conception Discussion :

Plantage Excel : Déployer mises à jours de modules et userforms sur plusieurs tableurs


Sujet :

Conception

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Plantage Excel : Déployer mises à jours de modules et userforms sur plusieurs tableurs
    Bonjour à tous!
    Après avoir passé ma journée à chercher une solution, je me décide à demander de l'aide...

    Je dois très souvent modifier mes codes et mes variables pour des tableaux de suivi de projets qui peuvent être utilisés par différents utilisateurs lorsqu'ils sont connectés ou pas au réseau de ma boite... Afin d'éviter de fastidieux copier/coller, de feuilles, modules et userforms, j'ai fait un petit code en me basant sur le tuto de Silkyroad: http://silkyroad.developpez.com/VBA/...sicEditor/#LIV

    Tout se passe bien pour le déploiement sur les 2 premiers Workbooks sur les 12 à mettre à jour. Malheureusement, à partir du 3ième, gros plantage! Excel se ferme après une demande d'envoie du rapport d'erreur à Microsoft...

    De temps à autres tout se passe bien pour quelques tableaux de plus ou de moins...

    J'ai certainement fait une petite erreur d'utilisation des fonctions... Pourriez-vous m'aider SVP? ce serait top...

    Voici mon joli code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    Sub DiffuserMAJVariables()
    Dim AdresseClasseurImporte, ClasseurImporte, Motdepassefichier As String
    Call InitialisationVariables 'Initialise toutes les variables dont j'ai besoin pour plusieurs modules
     
    If MsgBox("Tous les fichiers de suivi sont-ils fermés?", vbYesNo) = vbYes Then
        If MsgBox("Cette Opération va mettre à jour tous les fichiers", vbYesNo) = vbYes Then
     
        'Exporte les Modules & Userforms indiqués dans la feuille Variables vers le dossier Tampon
            modulei = 44
            Do While Worksheets("Variables").Cells(modulei, 2) <> ""
            modulenom = CStr(Worksheets("Variables").Cells(modulei, 3))
            moduleext = CStr(Worksheets("Variables").Cells(modulei, 4))
            moduleversion = CStr(Worksheets("Variables").Cells(modulei, 5))
            ThisWorkbook.VBProject.VBComponents(modulenom).Export AdresseTAMPON & modulenom & moduleversion & moduleext
            modulei = modulei + 1
            Loop
     
        'Recherche nombre de Packageurs inscrits dans la feuille Légendes
            testnbpack = 2
            Do While Worksheets("Légendes").Cells(testnbpack - 1, 20) <> 0
            NbrePackageurs = Worksheets("Légendes").Cells(testnbpack - 1, 20)
            testnbpack = testnbpack + 1
            Loop
     
        'Déploiement des MAJ pour chaque User
            For Packageuri = 1 To NbrePackageurs
            ClasseurImporte = "Suivi Projets " & CStr(Worksheets("Légendes").Cells(Packageuri + 1, 21)) & ".xlsm"
            Motdepassefichier = CStr(Worksheets("Légendes").Cells(Packageuri + 1, 22))
            AdresseClasseurImporte = Adressedessuivis & "\" & ClasseurImporte
     
            If ClasseurImporte <> NOM Then      'Ici NOM est le nom du tableau actif cette
     
     
            Excel.Workbooks.Open Filename:=AdresseClasseurImporte, Password:=Motdepassefichier, WriteResPassword:=Motdepassefichier
            NOMfichierMAJ = ActiveWorkbook.Name
     
            Application.ScreenUpdating = False
            Application.DisplayAlerts = False 'Supprime les alertes de copie
     
            SupprimerTousModules (ClasseurImporte)         'Fonction qui supprime tous les modules du tableur "ClasseurImporte"
     
            'Importe tous les fichiers du dossier tampon dans le fichier à mettre à jour
            modulei = 44
            Do While Workbooks(NOM).Worksheets("Variables").Cells(modulei, 2) <> ""
            modulenom = CStr(Workbooks(NOM).Worksheets("Variables").Cells(modulei, 3))
            moduleext = CStr(Workbooks(NOM).Worksheets("Variables").Cells(modulei, 4))
            moduleversion = CStr(Workbooks(NOM).Worksheets("Variables").Cells(modulei, 5))
            moduleglobal = AdresseTAMPON & modulenom & moduleversion & moduleext
            Workbooks(ClasseurImporte).VBProject.VBComponents.Import moduleglobal
            modulei = modulei + 1
            Loop
     
         'Supprime la feuille contenant toutes mes valeurs initiales des variables
            Windows(NOMfichierMAJ).Activate
            Sheets(Array("Variables")).Select
            ActiveWindow.SelectedSheets.Delete
            Windows(NOM).Activate
            Sheets(Array("Variables")).Select
            Sheets("Variables").Activate
            Sheets(Array("Variables")).Copy Before:=Workbooks(NOMfichierMAJ).Sheets(5)
     
            Application.ScreenUpdating = True
            Application.DisplayAlerts = True 'Active les alertes de copie
            'Application.ShowWindowsInTaskbar = True
     
            Workbooks(ClasseurImporte).Save
            Workbooks(ClasseurImporte).Close
            End If
     
            MsgBox ("Mise à jour déployée pour le tableau " & NOMfichierMAJ)
            Next Packageuri
     
            MsgBox ("Mise à jour déployée")
        End If
    End If
    End Sub
    Merci beaucoup pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut Quel est le nombre mini de feuilles dans un classeur ?
    Bonjour,

    Voir la ligne 60 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Sheets(Array("Variables")).Copy Before:=Workbooks(NOMfichierMAJ).Sheets(5)
    Si le fichier existant ne comporte pas 5 feuilles, ça va planter.

    S'il faut transférer à la dernière feuille par exemple, on s'affranchit du problème avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Sheets(Array("Variables")).Copy Before:=Workbooks(NOMfichierMAJ).Sheets(Sheets.count)
    D'autre part, n'auriez-vous pas intérêt à utiliser la technique des macro-complémentaires pour diffuser et mettre à jour vos programmes ? C'est ce que j'utilise comme technique pour diffuser mes applications à mes clients. L'utilisateur reçoit le fichier xla ou xlam contenant tous les modules et le met dans le répertoire APPDATA\ROAMING\MICROSOFT\ADDINS sous son répertoire utilisateur, le fichier de macros apparaît dans les compléments du menu d'Excel une fois installé. Il faut installer et désinstaller la macro à chaque ouverture /fermeture Excel avec une macro dans ThisWorkBook pour garantir la bonne version à chaque lancement d'Excel.

    Les fichiers de données ne contiennent pas de module.

    Cordialement.

Discussions similaires

  1. Mise à jour des modules - problème au lancement
    Par impolitis dans le forum Firefox
    Réponses: 1
    Dernier message: 06/02/2012, 23h15
  2. mise à jour des modules BioPerl et BioPerl::run
    Par Jasmine80 dans le forum Modules
    Réponses: 0
    Dernier message: 23/11/2009, 12h25
  3. Déployer mise à jour d'une application ASP.NET
    Par oclone dans le forum ASP.NET
    Réponses: 4
    Dernier message: 11/06/2009, 16h39
  4. Inserer une ligne dans excel et mise à jour dans word ?
    Par Kibald dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/10/2008, 12h31
  5. problème de mise à jour des modules
    Par Jasmine80 dans le forum Modules
    Réponses: 14
    Dernier message: 30/05/2008, 11h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo