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

Macros et VBA Excel Discussion :

Sub ou Function non définie


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2024
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2024
    Messages : 2
    Par défaut Sub ou Function non définie
    Bonjour,
    j'ai une macro qui fonctionne très bien sur un pc. J'ai voulu la faire fonctionner sur un autre PC et j'ai donc copie-collé le code dans un nouveau fichier. Les signets sont corrects, les chemins d'accès également.
    Cependant j'ai le message "Sub ou Function non définie" qui apparait sur la ligne Worskeets(feuille).Activate
    Je ne comprends pas pourquoi et comment résoudre ce problème
    Merci de votre aide!

    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    Sub Affichage()
    '
    ' Affichage Macro
    '
    Dim i As Integer
    Dim TotPoint As Integer
    TotPoint = 0
     
    Dim feuille(9) As String
    feuille(1) = "AUTONOMIE"
    feuille(2) = "MANAGEMENT"
    feuille(3) = "RELATIONNEL"
    feuille(4) = "IMPACT"
    feuille(5) = "AMPLEUR_DES_CONNAISSANCE"
    feuille(6) = "COMPLEXITE_ET_SAVOIR_FAIRE_PROF"
    feuille(7) = "BONIFICATIONS_RJ"
    feuille(8) = "BONIFICATIONS_EI"
     
    Dim signetw(9) As String
    signetw(1) = "AUTONOMIE"
    signetw(2) = "MANAGEMENT"
    signetw(3) = "RELATIONNEL"
    signetw(4) = "IMPACT"
    signetw(5) = "AMPLEUR_DES_CONNAISSANCE"
    signetw(6) = "COMPLEXITE_ET_SAVOIR_FAIRE_PROF"
    signetw(7) = "BONIFICATIONS_RJ"
    signetw(8) = "BONIFICATIONS_EI"
     
     
     
    'ouvrir ma feuille excel
    Set Ex = CreateObject("Excel.Application")
    Ex.Workbooks.Open "C:\Users\Adeline Wattiau\Documents\GERESO SIRH MACROS\Criteres classification v2.xlsx"
     
     
    For i = 1 To 8
        TotPoint = TraiteMarche(i, feuille(i), signetw(i), TotPoint)
     
    Next i
     
    'affichage du total des points
     Call RemplirSignet("TotPoint", CStr(TotPoint))
     
     
    End Sub
     
     
    Public Function TraiteMarche(i As Integer, feuille As String, signetw As String, TotPoint As Integer)
     
    Set saisie = ActiveDocument.ContentControls.Item(i)
     
    Worksheets(feuille).Activate
     
    Dim signet As String
    Dim Libel As String
     
     
     
    'recherche de la saisie (saisie - Item(1)) dans la feuille excel
    Set Plage = Range("A2:A9")
    For Each Ligne In Plage
        If Ligne.Text = saisie.Range Then
            Libel = Range("B" & Ligne.Row)
            signet = signetw & "_libelle"
            Call RemplirSignet(signet, Libel) 'remplir le signet en appelant la fonction
     
     Libel = Range("C" & Ligne.Row)
            signet = signetw & "_point"
            Call RemplirSignet(signet, Libel) 'remplir le signet en appelant la fonction
     
            TotPoint = TotPoint + CInt(Libel)
            TraiteMarche = TotPoint
     
        End If
    Next
     
     
    End Function
     
    Public Function RemplirSignet(A As String, B As String)
    'remplir le signet A avec le texte B
     
    Dim Place As Long
    Place = ActiveDocument.Bookmarks(A).Range.Start
    ActiveDocument.Bookmarks(A).Range.Text = B
    ActiveDocument.Bookmarks.Add Name:=A, Range:=ActiveDocument.Range(Place, Place + Len(B))
     
     
     
    End Function

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 174
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Cependant j'ai le message "Sub ou Function non définie" qui apparait sur la ligne Worskeets(feuille).Activate
    Merci de mettre votre code en forme (voir illustration ci-dessous) et nous indiquer le n° de la ligne où a lieu cette erreur. Cela nous évitera de nous même faire la recherche dans toutes ces lignes;

    Nom : dvp Editeur Balises Code.gif
Affichages : 864
Taille : 24,2 Ko
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2024
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2024
    Messages : 2
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,

    Merci de mettre votre code en forme (voir illustration ci-dessous) et nous indiquer le n° de la ligne où a lieu cette erreur. Cela nous évitera de nous même faire la recherche dans toutes ces lignes;

    Nom : dvp Editeur Balises Code.gif
Affichages : 864
Taille : 24,2 Ko

    Merci, voilà le code en forme ci-dessous, l'erreur me renvoie "sub ou function non définie" sur la ligne 52 (mais ne me renvoie pas d'erreur sur mon pc précédent)

    Merci de votre aide!

    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    Sub Affichage()
    '
    ' Affichage Macro
    '
    Dim i As Integer
    Dim TotPoint As Integer
    TotPoint = 0
    
    Dim feuille(9) As String
    feuille(1) = "AUTONOMIE"
    feuille(2) = "MANAGEMENT"
    feuille(3) = "RELATIONNEL"
    feuille(4) = "IMPACT"
    feuille(5) = "AMPLEUR_DES_CONNAISSANCE"
    feuille(6) = "COMPLEXITE_ET_SAVOIR_FAIRE_PROF"
    feuille(7) = "BONIFICATIONS_RJ"
    feuille(8) = "BONIFICATIONS_EI"
    
    Dim signetw(9) As String
    signetw(1) = "AUTONOMIE"
    signetw(2) = "MANAGEMENT"
    signetw(3) = "RELATIONNEL"
    signetw(4) = "IMPACT"
    signetw(5) = "AMPLEUR_DES_CONNAISSANCE"
    signetw(6) = "COMPLEXITE_ET_SAVOIR_FAIRE_PROF"
    signetw(7) = "BONIFICATIONS_RJ"
    signetw(8) = "BONIFICATIONS_EI"
    
    
    
    'ouvrir ma feuille excel
    Set Ex = CreateObject("Excel.Application")
    Ex.Workbooks.Open "C:\Users\Adeline Wattiau\Documents\GERESO SIRH MACROS\Criteres classification v2.xlsx"
    
    
    For i = 1 To 8
    TotPoint = TraiteMarche(i, feuille(i), signetw(i), TotPoint)
    
    Next i
    
    'affichage du total des points
    Call RemplirSignet("TotPoint", CStr(TotPoint))
    
    
    End Sub
    
    
    Public Function TraiteMarche(i As Integer, feuille As String, signetw As String, TotPoint As Integer)
    
    Set saisie = ActiveDocument.ContentControls.Item(i)
    
    Worksheets(feuille).Activate
    
    Dim signet As String
    Dim Libel As String
    
    
    
    'recherche de la saisie (saisie - Item(1)) dans la feuille excel
    Set Plage = Range("A2:A9")
    For Each Ligne In Plage
    If Ligne.Text = saisie.Range Then
    Libel = Range("B" & Ligne.Row)
    signet = signetw & "_libelle"
    Call RemplirSignet(signet, Libel) 'remplir le signet en appelant la fonction
    
    Libel = Range("C" & Ligne.Row)
    signet = signetw & "_point"
    Call RemplirSignet(signet, Libel) 'remplir le signet en appelant la fonction
    
    TotPoint = TotPoint + CInt(Libel)
    TraiteMarche = TotPoint
    
    End If
    Next
    
    
    End Function
    
    Public Function RemplirSignet(A As String, B As String)
    'remplir le signet A avec le texte B
    
    Dim Place As Long
    Place = ActiveDocument.Bookmarks(A).Range.Start
    ActiveDocument.Bookmarks(A).Range.Text = B
    ActiveDocument.Bookmarks.Add Name:=A, Range:=ActiveDocument.Range(Place, Place + Len(B))
    
    
    
    End Function

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 174
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Le message renvoyé "Sub ou Function non définie" est curieux sur cette ligne "Worksheets(feuille).Activate".
    J'aurais eu tendance à penser que la feuille n'est pas présente dans le classeur.
    La première chose à faire, c'est déjà de placer en tête de module, l'instruction Option Explicit et de faire lancer le compilateur (onglet Debogage -> Compiler VBA Project) cela permettra de déclarer les variables et de les typer et de détecter les erreurs renvoyées par le compilateur.

    Votre code semble être écrit pour tourner sur document Word et pas Excel. Il existe un forum dédié pour VBA Word
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [XL-2010] Erreur de compilation : Sub ou Function non définie
    Par forum2015 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 23/07/2014, 17h04
  2. [XL-2007] Erreur de compilation : Sub ou Function non définie
    Par pimpom81 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 27/03/2013, 19h47
  3. sub ou function non définie avec une boucle
    Par PPN83 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/10/2010, 16h07
  4. Réponses: 2
    Dernier message: 05/08/2009, 16h08
  5. Réponses: 5
    Dernier message: 22/12/2008, 10h20

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