Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Erreur macro

matmac

XLDnaute Occasionnel
Bonjour,

J'utilise un fichier dans lequel plusieurs macro sont exécutables.
J'ai une erreur depuis peu lorsque j'exécute la macro "copie liste élève" disponible sur l'onglet "accueil".
En ouvrant la boite de débogage, l'erreur est surlignée, mais la réparer dépasse mes compétences !!!
Si quelqu'un peut m'aider.
Le mot de passe pour exécuter cette macro est "escalade".

Merci par avance
Mat
 

Pièces jointes

  • Suivi Escalade T°J15-17.xlsm
    631.8 KB · Affichages: 4

soan

XLDnaute Barbatruc
Inactif
Bonjour matmac, vgendron,

dans ton Module3, à partir de la ligne 75, tu as la sub copie_liste_élèves_Cliquer() qui crée deux erreurs de compilation successives lors de la phase de compilation de ton projet VBA, car des variables n'ont pas été déclarées ! d'où l'intérêt de Option Explicit pour les détecter ! modifie ainsi le début de ta sub, et la compilation va passer ; par contre, par manque de temps, je n'ai pas vérifié si l'exécution est correcte.​

VB:
Sub copie_liste_élèves_Cliquer()
'
' copie_liste_élèves_Cliquer Macro
'
 
Dim rng_Liste_élève As Range, rng_Accueil As Range
Dim rng_feuil1 As Range, rng_project As Range
Dim i As Integer
 
Set rng_Liste_élève = Worksheets("Liste_élève").Range("A1:A40")

soan
 

matmac

XLDnaute Occasionnel
Re,

@soan, j'ai essayé, mais ça ne fonctionne pas.

@vgendron, effectivement, en enlevant le contenu de la ligne 40 dans la liste, cela focntionne. Je l'avais laissé un faux nom, car j'ai ajouté l'onglet tuto, et j'ai donc décalé les numéro de feuille dans la macro "copie fiche élève initialisation". Je voulais vérifier que la feuille élève 40 soit bien renseigné. Je ne pensait pas que le fait qu'il y ait des lignes vides soient un problème, je ne vois pas pourquoi d'ailleurs ! Dans l'idéal, il ne faudrait pas que ça en soit un, car quand un élève change de classe ou déménage, jusqu'à maintenant je le laissait dans la liste. Mais comme je vais partager ce fichier à des collègues, il ne faudrait pas qu'ils enlèvent un élève en laissant une case vide...
 

vgendron

XLDnaute Barbatruc
essai avec ce code
VB:
Public Sub CopieListeEleve()
If InputBox("Saisissez le mot de passe en minuscule") <> "escalade" Then
    MsgBox ("Mot de passe erroné")
    Exit Sub
End If
    
' On déprotège toutes les feuilles
Déprotéger

Const I_LIG_DEB As Integer = 5
Const I_LIG_MAX As Integer = 23

Dim oShList As Worksheet
Dim oShAcc As Worksheet
Dim iDerLig As Integer
Dim iLig As Integer

Dim iEcrCol As Integer
Dim iEcrLig As Integer
Dim TabEleves() As Variant

Set oShList = Worksheets("Liste_élève")
Set oShAcc = Worksheets("Accueil")

'RAZ
oShAcc.Range("B" & I_LIG_DEB & ":H" & I_LIG_MAX).ClearContents

'écriture
iEcrCol = 2
iEcrLig = I_LIG_DEB

iDerLig = oShList.Range("A" & Rows.Count).End(xlUp).Row
TabEleves = Range("Tab_Eleves").Value

Application.ScreenUpdating = False

For iLig = LBound(TabEleves, 1) To UBound(TabEleves, 1)
    If TabEleves(iLig, 1) <> "" Then
        If iEcrLig > I_LIG_MAX Then
            iEcrCol = iEcrCol + 2
            iEcrLig = I_LIG_DEB
        End If

        'lien hypertexte
        oShAcc.Hyperlinks.Add _
                Anchor:=oShAcc.Cells(iEcrLig, iEcrCol), _
                Address:="", _
                SubAddress:="élève" & iLig & "!A2", _
                TextToDisplay:=TabEleves(iLig, 1)
        Worksheets("élève" & iLig).Unprotect
        Worksheets("élève" & iLig).Range("A2").Value = TabEleves(iLig, 1)
        Worksheets("élève" & iLig).Protect
        'V0.2-fin
        iEcrLig = iEcrLig + 2
    End If
Next iLig

Application.ScreenUpdating = True


Set oShList = Nothing
Set oShAcc = Nothing

' On protège toutes les feuilles
Protéger

End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…