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 :

Verification sur changement valeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 69
    Par défaut Verification sur changement valeur
    Bonjour,

    Je crée actuellement un fichier excel à partir d'une base de donnée, ensuite je peux compléter les différents champs du fichier comme tout fichier excel.

    Je voudrais qu'une macro puisse vérifier si les données que je rentre sont cohérentes.

    Pour cela pas tellement de problème,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i=1 To 1000
    'Je vérifie si ma variable est d'un certain type et j'envoie un message d'erreur si ce n'est pas bon
    Next i
    Mais je voudrais que cette action s'exécute dès qu'un utilisateur renseigne une donnée sur la feuille excel et sans avoir à exécuter la macro.

    J'ai vu qu'on pouvait utiliser des WithEvents mais il faut forcément l'utiliser en classe objet apparemment.

    Avez vous une méthode sans classe objet, ou une piste?

    Sinon, connaissez vous un moyen pour appliquer une telle macro à un fichier excel que l'on récupérerai dans un répertoire?

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    afin d'éviter un code (quasi impossible à fournir vu les contradictions dans cette présentation !),

    revenir donc au B-A-BA d'une feuille de calculs d'Excel, à savoir la Validation des données

    Cf aide Excel et du forum …

  3. #3
    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 GreatTeacherOnizuka Voir le message
    Mais je voudrais que cette action s'exécute dès qu'un utilisateur renseigne une donnée sur la feuille excel et sans avoir à exécuter la macro.
    Tu peux utiliser l'évènement Change de l'objet Worksheet.

    Dans ton éditeur de projet, tu pointes sur le feuille de calcul concernée et tu places dans son code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_Change(ByVal Target as Range)
    Avec, dedans, ta macro ou un appel à ta macro.

    Mais fait attention : ça va vraiment déclencher ta macro à tous les changement dans la feuille, ce qui peut être très lourd à l'usage.
    Généralement, on allège ça en commençant par un IF qui vérifie si la cellule qui vient d'être modifiée est pertinente pour lancer la macro, histoire de ne pas la lancer de manière intempestive.

    Regarde les précision dans l'aide VBA intégrée.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 69
    Par défaut
    Merci effectivement, si ça s'exécute en permanence ça risque de poser quelques problèmes. J'imagine que quand je vais remplir mes fichier à partir de grande bases de données ça va peut être ramer.

    Je suis parti sur une autre solution, j'intègre un bouton à mon fichier excel, comme cela:
    (Ce code là est dans une fonction)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       With xlSheet.Buttons
          .Add(400, 30, 70, 30).Select
          .OnAction = "Verif(10, 10)"
          .Caption = "Vérifications"
       End With
    Et je veux que OnAction réalise cela par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Verif(ByRef valeur1 As Integer, ByRef valeur2 As Integer)
     
     'If Not xlSheet.Intersect(Target, xlSheet.Range("A10:J100")) Is Nothing Then
                    For i = 9 To valeur2
                            If IsNumeric(xlSheet.Cells(3, valeur1).Offset(i, 0)) = False Then
                            xlSheet.Range("A1:C10").Interior.Color = vbRed
                            End If
                    Next i
     
    End If
    'La valeur de la variable "valeur" est modifiée (donc la variable "nombre" est modifiée)
    End Sub
    Mais, j'ai un bug justement sur le OnAction, une idée du problème?

  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
    Quand tu passes un "If" en commentaire, pense à passer aussi en commentaire le "End if" qui va avec.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 69
    Par défaut
    Oups oui merci bien vu, à part cela la structure est correcte? Car j'ai le même message d'erreur, il me dit impossible de définir la propriété OnAction de la classe Buttons.

  7. #7
    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
    Quelle est la nature de xlSheet et Buttons ? Ce sont des variables ?

Discussions similaires

  1. Macro sur changement valeur cellule?
    Par jojo86 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/02/2010, 07h00
  2. exécution macro sur changement valeur cellule, juste un truc qui cloche.
    Par laatysha dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/05/2008, 09h00
  3. Réponses: 2
    Dernier message: 15/03/2007, 15h11
  4. [VBA-E]Lancer une macro sur changement de valeur cellule ?
    Par jeremiegrenoble dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/03/2006, 14h22
  5. Réponses: 1
    Dernier message: 29/09/2005, 11h10

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