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 :

Je n'arrive pas à modifier les cellules de ma feuille, Qu'est-ce qui ne va pas ? [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant Marketing
    Inscrit en
    Octobre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Consultant Marketing
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2017
    Messages : 5
    Par défaut Je n'arrive pas à modifier les cellules de ma feuille, Qu'est-ce qui ne va pas ?
    Bonjour,

    Dans le script suivant, la fonction va systématiquement au message d'erreur, dès que j'essaye de modifier une variable d'une cellule !
    Pourquoi ?

    Merci

    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
    Function Mod_Couleur(C, R, G, B)
    Dim Lieu As Range 'C
    Dim Rouge As Integer 'R
    Dim Vert As Integer 'G
    Dim Bleu As Integer 'B
    Dim Feuille As Excel.Worksheet
     
     
    On Error GoTo fin
     
    Rouge = R.Value
    Vert = G.Value
    Bleu = B.Value
    Couleur = RGB(Rouge, Vert, Bleu)
    Nom_de_la_feuille = C.Worksheet.Name
     
    Ligne = C.Row
    Colonne = C.Column
    Set Lieu = Worksheets(Nom_de_la_feuille).Cells(Ligne, Colonne)
     
    'à partir d'ici, on est en erreur !!
     
    Lieu.Value = Couleur
    Lieu.Interior.Color = Couleur
    Mod_Couleur = "OK"
    Exit Function
    fin:
    Mod_Couleur = ""
    '
    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 175
    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 175
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pourquoi placer un On Error à cet endroit là ?
    Pour connaître la raison du problème, il suffit de mettre la ligne 9 en commentaire et le message d'erreur renvoyé par VBA sera suffisamment explicite et la ligne où a lieu l'erreur sera mise en évidence en jaune.
    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
    Membre à l'essai
    Homme Profil pro
    Consultant Marketing
    Inscrit en
    Octobre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Consultant Marketing
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2017
    Messages : 5
    Par défaut
    Bonjour Philippe,

    Merci pour le conseil ! que j'avais déjà utilisé.
    Je n'ai aucun message d'erreur et la fonction passe allègrement dessus !
    Y aurait'il une option qui empêcherait la modification des cellules ?
    J'ai regardé les différentes protections des cellules que j'ai systématiquement enlevées !
    La feuille n'est pas protégée !
    J'ai une routine équivalente dans la feuille en question et qui marche ! J'utilise ici le nom de certaines cellules !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub worksheet_change(ByVal target As Range)
    Range("Couleur_résultante").Interior.Color = RGB(Range("Rouge").Value, Range("Vert").Value, Range("Bleu").Value)
    End Sub

  4. #4
    Membre à l'essai
    Homme Profil pro
    Consultant Marketing
    Inscrit en
    Octobre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Consultant Marketing
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2017
    Messages : 5
    Par défaut
    Re-bonjour Philippe,

    L'écran me donne juste ceci ...
    Nom : écran erreur fonction excel.png
Affichages : 274
Taille : 234,1 Ko

    Merci

  5. #5
    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
    Les Function ne sont pas faites pour réaliser des actions mais uniquement pour renvoyer des valeurs.

    Essaye de mettre en commentaire les lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Lieu.Value = Couleur
    Lieu.Interior.Color = Couleur
    Il serait aussi judicieux de mettre le type de données de tes paramètres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function Mod_Couleur(C As Range, R As Range, G As Range, B As Range) As String
    Et je suis entièrement d'accord avec Philippe Tulliez ( ) : mettre un On Error Goto global sur un code, c'est caca-pas beau.
    C'est le genre de chose qui ne devrait s'utiliser qu'avec parcimonie et sur des zones ciblées et limités du code.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Consultant Marketing
    Inscrit en
    Octobre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Consultant Marketing
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2017
    Messages : 5
    Par défaut
    Bonjour Menhir,

    Merci pour ton intervention.
    Je suis d'accord sur le principe de ne pas utiliser abusivement du On Error Goto. C'était le seul moyen pour moi de trouver où le problème résidait.
    J'ai mis effectivement les lignes qui me posent problème en commentaires et la fonction travaille bien mais mon objet c'est de modifier la couleur du fonds d'une cellule !
    Comment puis-je y arriver ?
    J'utilise cette manière de faire dans la feuille comme précédemment décrite et cela marche !

    Merci

  7. #7
    Membre à l'essai
    Homme Profil pro
    Consultant Marketing
    Inscrit en
    Octobre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Consultant Marketing
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2017
    Messages : 5
    Par défaut
    Merci dysorthographie,

    C'est parce que je n'avais pas de message d'erreur que j'ai cherché à trouver là où cela pêchait !
    J'ai compris qu'il n'y avait pas de possibilité de modifier d'autres cellules que celle par laquelle on fait appel à la fonction comme me l'explique très bien Philippe.
    J'ai donc contourné le problème en utilisant .

    --

    Merci Philippe,

    Je connais maintenant les limites de l'utilisation de modification des cellules.
    J'ai contourné le problème en utilisant .

    Merci encore

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Personnellement,pour les novices, je préconise de n jamais utiliser on error
    Un message d'erreur est préférable à un fonctionnement erratique!

    Dans d'autre langages on appel ça de exceptions,il faut que ça reste exceptionnel,voir jamais si on ne sais pas les gérer!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/07/2010, 19h56
  2. [JTable] Impossible de modifier les cellules
    Par rtg57 dans le forum Composants
    Réponses: 3
    Dernier message: 04/03/2010, 13h06
  3. [XL-2003] Lors de l'insertion d'une ligne ne pas modifier les lignes de calcul
    Par peofofo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/02/2010, 00h18
  4. modifier les cellule d'EXCEL avec textbox
    Par Philippe76 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/02/2009, 08h56
  5. [6.0.5][Webi] Ne pas couper les cellules
    Par afssaLERH dans le forum Débuter
    Réponses: 6
    Dernier message: 12/08/2008, 16h18

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