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 avec une boucle


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 120
    Points : 63
    Points
    63
    Par défaut sub ou function non définie avec une boucle
    Bonjour,

    je souhaite modifier la couleur de 6 textbox (eva1à 6) pour l'impression mais je n'y arrive pas en faisant une boucle.
    avec le code suivant ça marche

    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
    Sub Imprimer2_Click()
     
    eva1.BackColor = RGB(255, 255, 255)
    eva2.BackColor = RGB(255, 255, 255)
    eva3.BackColor = RGB(255, 255, 255)
    eva4.BackColor = RGB(255, 255, 255)
    eva5.BackColor = RGB(255, 255, 255)
    eva6.BackColor = RGB(255, 255, 255)
    ActiveWindow.SelectedSheets.PrintOut Copies:=1
    eva1.BackColor = RGB(198, 235, 244)
    eva2.BackColor = RGB(198, 235, 244)
    eva3.BackColor = RGB(198, 235, 244)
    eva4.BackColor = RGB(198, 235, 244)
    eva5.BackColor = RGB(198, 235, 244)
    eva6.BackColor = RGB(198, 235, 244)
     
    End Sub
    Mais avec la boucle suivante j'ai le message "Erreur de compilation:Sub ou Function non définie"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Imprimer1_Click()
     
    Dim i As Integer
    For i = 1 To 6
    eva(i).BackColor = RGB(255, 255, 255)
    Next
    ActiveWindow.SelectedSheets.PrintOut Copies:=1
    For i = 1 To 6
    eva(i).BackColor = RGB(198, 235, 244)
    Next
    End Sub
    Merci de votre aide

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Points : 617
    Points
    617
    Par défaut
    salut

    tu ne nous précises pas sur quoi se trouvent ces textboxes ...

    Si elles se trouvent sur un UserForm :
    se réfère à la textbox nommée "eva1" si x = 1, "eva2" si x = 2, etc ...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 120
    Points : 63
    Points
    63
    Par défaut re
    Bonjour,

    les textbox se trouvent sur une feuille de calcul

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Points : 617
    Points
    617
    Par défaut
    D'où l'importance d'être précis dans ses questions

    C'est dans ce cas la collection Shapes (au lieu de la collection Controls) qu'il convient d'utiliser, de la même manière.

  5. #5
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 060
    Points
    32 060
    Par défaut
    Citation Envoyé par PPN83 Voir le message
    .
    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
    Sub Imprimer2_Click()
     
    eva1.BackColor = RGB(255, 255, 255)
    eva2.BackColor = RGB(255, 255, 255)
    eva3.BackColor = RGB(255, 255, 255)
    eva4.BackColor = RGB(255, 255, 255)
    eva5.BackColor = RGB(255, 255, 255)
    eva6.BackColor = RGB(255, 255, 255)
    ActiveWindow.SelectedSheets.PrintOut Copies:=1
    eva1.BackColor = RGB(198, 235, 244)
    eva2.BackColor = RGB(198, 235, 244)
    eva3.BackColor = RGB(198, 235, 244)
    eva4.BackColor = RGB(198, 235, 244)
    eva5.BackColor = RGB(198, 235, 244)
    eva6.BackColor = RGB(198, 235, 244)
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Imprimer1_Click()
     
    Dim i As Integer
    For i = 1 To 6
    eva(i).BackColor = RGB(255, 255, 255)
    ActiveWindow.SelectedSheets.PrintOut Copies:=1
    Next
    For i = 1 To 6
    eva(i).BackColor = RGB(198, 235, 244)
    Next
    End Sub
    Il me semble que le problème est là :
    eva(i), ça n'existe pas. Il faut forcer le nom. Je n'ai pas de solution toute faite. Mais tu ne peux pas passer d'un nom "en dur" comme eva6 à un nom "généré", il faut passer par des propriétés systèmes, comme le controls proposé par Babaothe(pour les userforms). En leur absence, ça ne peut pas marcher.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 120
    Points : 63
    Points
    63
    Par défaut re
    j'ai le message " Propriété ou méthode non gérée par cet objet"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Imprimer1_Click()
     
    Dim i As Integer
    For i = 1 To 6
    Shapes("eva" & i).BackColor = RGB(255, 255, 255)
    Next
    ActiveWindow.SelectedSheets.PrintOut Copies:=1
    For i = 1 To 6
    Shapes("eva" & i).BackColor = RGB(198, 235, 244)
    Next
    End Sub

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Points : 617
    Points
    617
    Par défaut
    cela signifie tout simplement que tes textboxes en question (sur ta feuille de calcul) n'ont pas la propriété BackColor ou nque bcelle-ci n'est pas modifiable dynamiquement
    Tu ne peux bien évidemment pas donner une valeur à une propriété inexistante ou non modifiable dynamiquement

    EDIT :
    On va changer de collection, dans ce cas :

    essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.OLEObjects("eva" & i).Object.BackColor = RGB(0, 0, 0)
    et ainsi traiter un objet, plutôt qu'une shape

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 120
    Points : 63
    Points
    63
    Par défaut re
    Ok avec ce code ça fonctionne Merci
    Mais quand tu dis non modifiable dynamiquement ça veut dire quoi ?
    sinon elles ont bien la propriété backcolor sinon je pense que mon premier code n'aurait pas fonctionné.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Countif sur une plage définie avec une boucle
    Par klash384 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/01/2015, 16h57
  2. [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
  3. [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
  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