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 :

Message d'erreur : Sub ou function non défini


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 8
    Par défaut Message d'erreur : Sub ou function non défini
    Bonjour,
    Etan débutant sur VBA je sollicite votre aide pour essayer de trouver et surtout comprendre pourquoi mon code ne fonctionne pas.
    Au lancement, j'ai le message d'erreur suivant : sub ou function non défini

    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
    Sub test()
     
    i = 1
    'colonne mois dans feuille "flux sage"
    j = 5
    'colonne mois dans feuille "sage synthèse codes budgétaires"
    k = 3
    'ligne code budgétaire dans feuille "sage synthèse codes budgétaires"
     
    For Each Cells In column(" & i & ")
            Do
                If Cells.Value = Workbooks("testmacro.xlsm").Sheets("sage synthèse codes budgétaires").Cells(" & k & ", 1).Value Then
                    'on check si la cellule parcourue correspond au code budg de la colonne 1 de "sage synthèse codes budgetaires"
     
                    var = ActiveCell.Offset(0, 2).Select.Value
                    'si oui on prend le montant associé au code budg qui est 2 colonnes à droite
     
                    Workbooks("testmacro.xlsm").Sheets("sage synthèse codes budgétaires").Cells(" & k & ", " & j & ").Value = var
                    'On copie la valeur du montant sur la feuille syntèse code budg vers le code associé
                    'donc ligne k, au mois associé donc ligne j le tout sur "sage synthèses codes budgétaires"
     
                End If
     
            Loop While Cells.Value = "Total" And i <= 31 And j <= 16 And k <= 41
     
     
    i = i + 3
    j = j + 1
    k = k + 1
     
    Next
     
    End Sub
    *Pour info ce code me permettrait de comparer chaque code budg d'une feuille extraite d'un autre logiciel mais lorsqu'elle arrive sur excel, celle ci est désorganisée
    C'est pour cela que je cherche à délimiter le champ d'action de mes comparaisons.

    Merci d'avance à tous.

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par zyzzz Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Cells In column(" & i & ")
    C'est une très mauvaise idée de donner à une variable le nom d'un objet Excel.
    Tu devrais mettre un Option Explicit avant ton code et déclarer toutes tes variables en spécifiant systématiquement leur type.

    Second chose sur cette même ligne : ne trouves-tu pas étrange que le VBE n'ait pas mis une majuscule à column ?
    Généralement, c'est le signe d'une "faute d'orthographe", c'est-à-dire d'un objet qui n'existe pas.

    Et je ne comprends vraiment pas pourquoi tu notes les références de colonne " & i & " et autre " & k & ".

    En plus, j'ai l'impression que tu t'emmêles les pinceaux entre la variable Cells de ta boucle (qui, d'ailleurs, ne devrait pas s'appeler comme ça) et ActiveCells qui est sans rapport (mais avec le .Offset(0, 2).Select qui y est collé, ça va faire un joli déplacement en crabe).

    Bref, corrige déjà tout ça et on verra le reste après.

  3. #3
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 8
    Par défaut
    Merci pour ta réponse rapide.
    Effectivement je pensais que l'objet Column existait mais ce n'est pas le cas apparemment
    Si j'ai bien compris je dois écrire quelques lignes de codes brutes pour parcourir chaque colonne.
    Je vais aussi suivre tes conseils et définir les variables.
    Encore merci

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par zyzzz Voir le message
    Effectivement je pensais que l'objet Column existait mais ce n'est pas le cas apparemment
    Si c'est le cas, mais si on doit l'appeler par un idem, il faut le faire en tant qu'élément d'une collection.
    https://msdn.microsoft.com/fr-fr/VBA...property-excel

    Voir le reste de mon message (j'ai fait un Edit après avoir repéré d'autres incohérences).

  5. #5
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 8
    Par défaut
    C'est un peu farfelu mais je vais essayer d'expliquer ce que je veux faire.
    J'ai une feuille sur laquelle je veux parcourir toutes les i+3 colonnes en commencant avec la première mais en m'arrettant à la 31 ème
    Le soucis est que je ne veux pas les parcourir complètement mais que jusqu'à ce qu'une cellule affiche "Total". A partir de ce moment la je réedite l'opération mais sur la colonne i+3.
    Par la même occasion lorsque je parcours une colonne, si la valeur de la cellule correspond à la valeur d'une autre cellule sur une autre feuille, je prends la valeur adjacente de 2 colonnes à cette dernière (d'ou mon var = ActiveCell.Offset(0, 2).Select.Value mais peut etre faut il enlever le select) pour la copier sur l'autre feuille à l emplacement k;j

  6. #6
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    jusqu'à ce qu'une cellule affiche "Total"
    je pense à xlUp , xlLeft , ....

    dans une colonne , la cellule "Total" est la dernière cellule - 1 , ou -2 , ou -3 , ...

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

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