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 :

Fonction Worksheet_Change: Erreur de Syntaxe [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Par défaut Fonction Worksheet_Change: Erreur de Syntaxe
    Bonjour,
    Par une macro je souhaite remplir des cellules automatiquement dés que d'autres sont saisient, ex: Si une cellule de la colonne "Listes" est remplie, je veux que dans la même ligne toutes les colonnes terminant par "..Type de champs" soient remplient automatiquement par "combobox".

    J'ai une fonction que je veux améliorer svp, Précisemment (.InsertLines 4):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub GenerateCode(SheetName As Variant)
    With ThisWorkbook.VBProject.VBComponents(SheetName).CodeModule
    .InsertLines 1, "Private Sub Worksheet_Change(ByVal Target As Range)"
    .InsertLines 2, "If Cells(1, Target.Column).Value Like ""Listes"" Then"
    .InsertLines 3, "Application.EnableEvents = False"
    .InsertLines 4, "Target.Offset(0, 3) = ""combobox"""
    .InsertLines 5, "Application.EnableEvents = True"
    .InsertLines 6, "End If"
    .InsertLines 7, "End Sub"
    End With
    End Sub
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .InsertLines 4, ".Cells(1,Target.Column).Value Like "*" & "Type de Champs" = ""combobox"""
    Mais j'ai erreur de Syntax! Help !

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonsoir,

    je suis étonné par ton code donc la fonctionnalité n'est pas celle que tu décris ...

    est-tu sur de vouloir "écrire un code qui écrit du code " ?

  3. #3
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir.

    Tu veux obtenir quoi sur cette ligne ?

    Cordialement

    PGZ

  4. #4
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Par défaut
    Désolée, je n'ai pas bien détaillé ma question,

    Parmis les colonnes de mes feuilles: j'ai MINIMUM, MAXIMUM, Multiple, Format de Date, champs1 Type de champ, champs2 Type de champ, champs1 Optionel ou Requis, champs2 Optionel ou Requis ...
    Quand je tape 0 dans MINIMUM, "champs1 Optionel ou Requis", "champs2 Optionel ou Requis" doit avoir Optionel,
    Quand je tape 1 dans MINIMUM, "champs1 Optionel ou Requis", "champs2 Optionel ou Requis" doit avoir Requis,

    J'ai crée la fonction mais ça ne marche pas comme je veux, par exemple quand je tape 0 dans la ligne 1 et je mets le curseur dans la ligne 2, j'ai Optionel qui s'affiche mais dans la ligne 2 et non pas 1.
    Des fois même ça n'affiche pas la bonne valeur, soit Optionel soit Requis !
    Quand je vide la cellule, les valeurs générées ne se suppriment pas.

    Voici ma fonction:

    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
    Private Sub CreerCode(ShName As Variant)
        With ThisWorkbook.VBProject.VBComponents(ShName).CodeModule  
            .InsertLines 1, "Private Sub Worksheet_Change(ByVal Target As Range)"
            .InsertLines 2, "Dim ws As Worksheet"
            .InsertLines 3, "Dim Col As Integer"
            .InsertLines 4, "Dim cel As String"
            .InsertLines 5, "Set ws = Worksheets(ActiveSheet.Name)"
            .InsertLines 26, "If Cells(1, Target.Column).Value Like ""MINIMUM"" Then"
              .InsertLines 27, "If ActiveCell.value=0 Then"
                .InsertLines 28, "Application.EnableEvents = False"
                    .InsertLines 29, "For Col = 1 To Columns(Split(ws.UsedRange.Address, ""$"")(3)).Column"
                        .InsertLines 30, "cel = ws.Cells(1, Col)"
                        .InsertLines 31, "If cel Like ""*Optionel ou Requis"" Then"
                            .InsertLines 32, "ws.Cells(ActiveCell.row, Col).value = ""Optionel"""
                        .InsertLines 33, "End If"
                    .InsertLines 34, "Next"
                .InsertLines 35, "Application.EnableEvents = True"
    			.InsertLines 36, "ElseIf ActiveCell.value=1 Then"
    				.InsertLines 37, "Application.EnableEvents = False"
    					.InsertLines 38, "For Col = 1 To Columns(Split(ws.UsedRange.Address, ""$"")(3)).Column"
    						.InsertLines 39, "cel = ws.Cells(1, Col)"
    						.InsertLines 40, "If cel Like ""*Optionel ou Requis"" Then"
    							.InsertLines 41, "ws.Cells(ActiveCell.row, Col).value = ""Requis"""
    						.InsertLines 42, "End If"
    					.InsertLines 43, "Next"
    				.InsertLines 44, "Application.EnableEvents = True"
    			.InsertLines 45, "End If"
            .InsertLines 46, "End If" 
            .InsertLines 47, "End Sub"
        End With
    End Sub
    Pourriez vous me dire où ça pose problème?

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonsoir,

    pourquoi tu t’obstine à nous monter un code qui ne correspond pas à ta description de problème le code que tu nous montre ne modifie rien dans tes feuilles de calculs, il génère du code !!!

    s'il s'agit d'un problème dans tes feuilles de calculs montre nous le code généré (Worksheet_Change) et pas ce code intermédiaire, dont l’utilité reste à prouver ...

  6. #6
    Membre éprouvé
    Formateur en informatique
    Inscrit en
    Janvier 2011
    Messages
    134
    Détails du profil
    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 134
    Par défaut
    Bonjour,

    Worksheet_Change(ByVal Target As Range) utilise Target pour indiquer la plage qui a été modifiée.

    C'est donc Target qu'il faut "étudier" (ligne 27 et autres) et non pas ActiveCell (car quand on saisie dans une cellule et qu'on fait Entrée, généralement la cellule d'en dessous devient la cellule active)

    Cordialement,

    Stéphane

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

Discussions similaires

  1. [Vxi3] Fonction @prompt erreur de syntaxe
    Par DamienBC dans le forum Designer
    Réponses: 1
    Dernier message: 16/02/2014, 19h37
  2. [AC-2010] Créer une fonction VBA, erreur de syntaxe
    Par aurelien76 dans le forum VBA Access
    Réponses: 6
    Dernier message: 08/06/2013, 12h03
  3. Fonction DSum Erreur de Syntaxe
    Par othke dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 06/03/2010, 08h38
  4. Erreur de syntaxe sur fonction
    Par diableblanc dans le forum Informix
    Réponses: 2
    Dernier message: 06/05/2008, 17h04
  5. fonction checkTest : erreur de syntaxe
    Par MmoulinexX dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/06/2006, 10h29

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