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 :

[VBA][Excel] Lancer procédure


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut [VBA][Excel] Lancer procédure
    Re Bonjour,
    J'explique mon programme :
    1) Copier la feuille "Masque Planning" en dernier et la renommer "NomFichier"
    2) Prendre les données dans Planning annuel et les mettre dans "NomFichier"
    3) Mettre P,F,A dans les cellules I3 à I300
    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
     
        Sheets(NomFichier).Range("I3:I300").Select
        With Selection.validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="P,F,A"
            .IgnoreBlank = False
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    Maintenant mon problème arrive :
    Dès que l'on modifie la valeur I3 à I300 cela crée des actions.
    Le code qui fonctionne est celui là :
    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
     
    Dim détailanomalie
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Range("G2:H500"), Target) Is Nothing Then
            If Target = "A" Then
            Worksheets("anomalie").Cells(6, 4) = Cells(Target.Row, 5)
            Worksheets("anomalie").Cells(7, 4) = Cells(Target.Row, 4)
            Cells(Target.Row, 9).Activate
            ActiveCell.FormulaR1C1 = "=TODAY()"
            Worksheets("anomalie").Activate
            détailanomalie = Format(InputBox("Expliquer l'anomalie constatée", , ""))
            Worksheets("anomalie").Cells(9, 4).Value = détailanomalie
            Sheets("anomalie").Select
            Worksheets("anomalie").Cells(2, 5).Activate
            ActiveCell.FormulaR1C1 = "=TODAY()"
            Sheets("anomalie").Activate
            End If
            If Target = "F" Then
            Cells(Target.Row, 9).Activate
            ActiveCell.FormulaR1C1 = "=TODAY()"
            End If
        End If
    End Sub
    Le problème est sur la ligne "If Target = "A" Then"
    On me dit : Incompatibilité de type
    Quelqu'un a t-il une idée ??
    Merci

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Target c'est un Range ?


  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    Oui mais je ne comprend pas ta question ?

  4. #4
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Bah ton target est définit comme un Range..
    TU m'explique comment une plage de cellules peut etre égal a une lettre ?

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    C'est vrai ça
    c'est un peu comme dire choux=poire

    Quand tu veux tester la valeur d'un objet range, il vaut mieux utiliser
    range.value
    c'est plus sur. Donc dans ton cas ça donnerais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.value = "A" Then
    Voilà

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    ton idée est intéressante mais cela plante toujours avec la même raison incompatibilité de type.

  7. #7
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    C'est quoi ces P,F et A ? c'est quoi ce A qu'il y aurait probablement dans ta cellule ?

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    A est le racourci pour Anomalie.
    Mon fichier est une succession de contrôle à réaliser.
    P : signifie programmé
    F : signifie fait sans problème
    A : signifie anomalie -> ouvre une fiche pour renseigner l'anomalie rencontrée.

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    Pour vous éclairer,
    avant mon fichiers excel comporter 13 onglets
    1 annuel, 12 fiches mensuels
    Sur chacunes des fiches j'ai mis le code:
    Private Sub Worksheet_Change(ByVal Target As Range)

    et là pas de problème cela fonctionné.
    Cependant cela prennait un volume important.

    Maintenant, je veux réduire le nombre d'onglets (feuilles excel)
    1 annuel, 1 masques et en créer une suivant le mois de l'année.
    Je soushaite sur cette fiche avoir le même code que précédement.

  10. #10
    Expert éminent sénior


    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
    Points : 20 040
    Points
    20 040
    Par défaut
    et le message d'erreur il apparait à quel moment ..
    - Quand tu sélectionne quelque chose dans tes listes de choix.....

    sur une autre action ...?


    et pourquoi surveiller
    "G2:H500" alors que tes listes de choix ne sont qu'en "I2:I300"

  11. #11
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Citation Envoyé par padre03
    C'est vrai ça
    c'est un peu comme dire choux=poire

    Quand tu veux tester la valeur d'un objet range, il vaut mieux utiliser
    range.value
    c'est plus sur. Donc dans ton cas ça donnerais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.value = "A" Then
    Voilà

    tu peux meme pas faire ça, il faut que tu cible la cellule que tuv eux, par xemple faire un target("A1").value la ça marcherai..

    Essaye peut etre d'écrire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    target.cells(1,1).value = "A"
    pour faire un test, après c'est a toi de le mettre en forme pour ta procédure avec 2 for imbriqués par exemple, pour parcourir ta plage d cellule que tu appelle "target"

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Target donne la cellule active

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    Je viens de vous rattacher mon fichier pour que vous puissiez comprendre mon problème.
    Le mot de passe : aurelie
    C'est mon prénom.

  14. #14
    Expert éminent sénior


    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
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par bbil
    et le message d'erreur il apparait à quel moment ..
    - Quand tu sélectionne quelque chose dans tes listes de choix.....

    sur une autre action ...?
    le message n'apparai-t'l pas sur copie... ou tout autre action provoquant la modification simultanée de cellules..?

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    Oui c'est exact. Il apparait au moment ou je test la valeur de ma cellule pour supprimer ou non la colonne.
    Mais pourquoi ???

    J'ai joins mon fichier dans mon précédent post.

  16. #16
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Citation Envoyé par ouskel'n'or
    Target donne la cellule active

    Selon l'aide, ça donne pas la cellule active mais une plage de cellules je comprend pas trop ce que tu veux dire en fait la ?

    EDIT : en mettant la tu as la target un target.cells(9,3).value tu n'a splus l'erreur sur la ligne, malheureusement je sais pas si ça te convient. Tu veux faire quoi au final ? tu veux qui regarde toutes les colonnes de la feuille nommée "janvier" (quand ut clique sur janvier au début) ?

  17. #17
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Fais ça dans la feuille de code de la feuille de calcul :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
          MsgBox Target.Address 'Donne l'adresse de la cellule active
          MsgBox Target.Row
          MsgBox Target.Column
    End Sub
    ..............................................................

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    Oui c'est exactement cela OUSKEL'N'OR, je soushaite qu'il scrute toute ma colonne. Dès que l'on passe un élément de la colonne de P à A, il y a une action qui se lance.

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    je regarde ce que tu m'as dit et je te dis

  20. #20
    Expert éminent sénior


    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
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par mulanzia2003
    Oui c'est exact. Il apparait au moment ou je test la valeur de ma cellule pour supprimer ou non la colonne.
    Mais pourquoi ???

    J'ai joins mon fichier dans mon précédent post.
    ben si tu modifie plusieur cellules en simultané ton code ..:

    ne fonctionne pas ... modifie en rajoutant le test (à la ligne précédente)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if target.count <> 1 then exit sub

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VBA/Excel]lancer une macro d'un autre document
    Par daniel_gre dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/05/2008, 15h37
  2. [vba excel] lancer 3 module a l'ouverture de mon userform
    Par CIBOOX dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 22/02/2007, 18h50
  3. [VBA-Excel] Lancer une option de la barre des menu
    Par vovor dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/07/2006, 15h41
  4. [VBA-A] Lancer une procédure d'une application ArcMap
    Par TiT0f dans le forum VBA Access
    Réponses: 11
    Dernier message: 05/06/2006, 23h44
  5. [VBA-E] [Excel] Lancer une macro à une heure donnée
    Par Lysis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2002, 12h15

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