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 :

Application Defined - or Object error


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 89
    Par défaut Application Defined - or Object error
    Je n'arrive pas à comprendre d'ou vient cette erreur !!!! Pour une fois que j'écris tout le code tout seul ca fonctionne pas !!

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    Private Sub CommandButton1_Click()
     
    Dim i As Integer
    Dim r1, r2, ranges As Range
    Dim DebutX As Integer
    Dim FinX As Integer
    Dim j As Integer
    Dim k As Integer
     
    'Definition du i 
     
      If Cbo_device.Value = "a" Then
            i = 2
        ElseIf Cbo_device.Value = "b" Then
            i = 3
        ElseIf Cbo_device.Value = "c" Then
            i = 4
        ElseIf Cbo_device.Value = "d" Then
            i = 5
        ElseIf Cbo_device.Value = "e" Then
            i = 6
        ElseIf Cbo_device.Value = "f" Then
            i = 7
      End If
     
    ' Tentative de trouver le numéro de la collone correspondant
    ' correspondant à la selection dans une combobox, cette partie du code ne
    ' fonctionne pas               
     
    For j = 2 To 256
     If j.value = cbo_debut.Value Then
        ActiveCell.Columns = DebutX
        End If
        Next j
     
    For k = 2 To 256
     If k.value = cbo_fin.Value Then
        ActiveCell.Columns = FinX
        End If
        Next
     
    'Definition des plages pour le graph       
    Set r1 = Sheets("Data").Range(Cells(1, DebutX), Cells(1, FinX))
    Set r2 = Sheets("Data").Range(Cells(i, DebutX), Cells(i, FinX))
    Set ranges = Union(r1, r2)
     
        Charts.Add
        ActiveChart.ChartType = xlLineMarkers
        ActiveChart.SetSourceData Source:=ranges, PlotBy:= _
            xlRows
        ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Graph Alliance"
        With ActiveChart
            .HasAxis(xlCategory, xlPrimary) = True
            .HasAxis(xlValue, xlPrimary) = True
        End With
        ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic
        ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowValue, LegendKey:=False
     
    End Sub
    Tout fonctionne à part la partie ou je tente de trouver le numéro de la collone...

    Merci d'avance si qq à une idée !
    ++ Arnaud

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Elle est sur quelle ligne ton erreur ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 89
    Par défaut
    L'erreur est au niveau de la défnition des r1 et r2
    et aussi des deux boucle For J... et For k ...

    @+

  4. #4
    Expert confirmé
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Par défaut
    Salut,

    Lorsque tu as des erreurs : ce serait pas mal que tu nous les communiques

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim r1, r2, ranges As Range
    Ici r1 et r2 sont déclarés comme Variant !!
    Si tu veux que ce soit Range il faut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim r1 As Range, r2 As Range, ranges As Range

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 89
    Par défaut
    Merci, je pensais que ça équivalais ...

    Malheureusement l'erreur reste la même "Application defined...." à la ligne :

    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
     
     
    For j = 2 To 256
     If ActiveCell.Value = cbo_debut.Value Then
        ActiveCell.Column = DebutX
        End If
        Next j
     
    For k = 2 To 256
     If ActiveCell.Value = cbo_fin.Value Then
        ActiveCell.Column = FinX
        End If
        Next
     
    'L'ERREUR EST SUR LES LIGNES SET R1 et SET R2     
    Set r1 = Sheets("Data").Range(Cells(1, DebutX), Cells(1, FinX))
    Set r2 = Sheets("Data").Range(Cells(i, DebutX), Cells(i, FinX))
    Set ranges = Union(r1, r2)

    Je pense que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For j = 2 To 256
     If ActiveCell.Value = cbo_debut.Value Then
        ActiveCell.Column = DebutX
        End If
        Next j
    n'est pas approprié pour trouver le numéro de la collone correspondant à la selection dans ma combobox !

    Merci mille fois

  6. #6
    Expert confirmé
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Par défaut
    Si DebutX sert à stocker le numéro de colonne, tu devrais plutôt écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DebutX = ActiveCell.Column

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Ou alors tu change ta macro en écrivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For j = 2 To 256
     If ActiveCell.Value = cbo_debut.Value Then
        debutx = j
         exit for
        End If
        Next j
    je pense que ça marchera aussi

    t'a mis des msgbox pour voir si tu avais les bonnes valeurs dans tes variables ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    bonjour

    je ne vois pas comment ta boucle evolue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For j = 2 To 256
     If ActiveCell.Value = cbo_debut.Value Then 'la cellule active est toujours la meme quelque soit j    ActiveCell.Column = DebutX
        End If
        Next j
    essaye plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for j = 2 to 256
    cells(j,no de colonne).value = cbo_debut.value then
    debutx = j

  9. #9
    Expert confirmé
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Par défaut
    Citation Envoyé par patbou
    bonjour

    je ne vois pas comment ta boucle evolue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For j = 2 To 256
        If ActiveCell.Value = cbo_debut.Value Then 
            ActiveCell.Column = DebutX
        End If
    Next j
    Et bien si elle évolue...
    Code Algo : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Pour j = 2 jusqu'à 256
        Si cellule active = cbo_debut alors
            DebutX = Colonne de la cellule active
       Fin si
    J suivant c'est à dire j = j + 1
    Il y a bien incrémentation

    essaye plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for j = 2 to 256
    cells(j,no de colonne).value = cbo_debut.value then
    debutx = j
    Essaie de compiler ça.... il va t'envoyer bouler sur le Then.
    Et le pas il est où ?

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 89
    Par défaut
    Merci,

    bravo ça marche bien maintenant, effectivement je me trompais avec activecell.column...

    Il fallais donc bien que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For j = 2 To 256
     If Cells(1, j).Value = cbo_debut.Value Then
        DebutX = j
        End If
        Next j
    Et là ça fonctionne !!!

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 89
    Par défaut
    Ma macro fontionne toujours bien avec du texte, mais avec une date ça ne fonctionne plus !!

    j'ai pourtant essayer de spécifier le format ou d'utiliser DateValue mais rien y fait toujours cette erreur ... "Application Defined.....

    Si qq sais comment ça fonctionne !

    MErci et @+++

    Arnaud

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Montre nous ta macro pour voir comment tu utilise ta fonction datevalue pour voir ou est l'erreur ça sera plus simple a te corriger

    Utilise effectivement DateValue, regarde aussi du coté de DateSerial, si jamais
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 89
    Par défaut
    Merci de cette réponse,

    J'insère mes dates dans ma combobox cbo_debut et cbo_fin avec cette boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For X = 2 To 256
        If Cells(1, X).Value = "" Then
        Else
        cbo_fin.AddItem Format(Sheets("Data").Cells(1, X), "mm/dd/yyyy")
        End If
        Next X
    Pour la boucle, j'utilise DateValue comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    For j = 2 To 256
     If Cells(1, j).DateValue = cbo_debut.DateValue Then
        DebutX = j
        End If
        Next j
     
    For k = 2 To 256
     If Cells(1, k).DateValue = cbo_fin.DateValue Then
        FinX = k
        End If
        Next
    Je pensais pdt un moment que ct dû au format de mon calendrier sur mon ordi qui étais différent d'Excel mais maintenant j'ai tout remis pareil et ça ne change pas !

    Merci d'avance ...

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Ahhhhhhhhh

    c'est normal que tu ai une erreur la fonction date value ne s'utilise pas de cette manière c'est une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For j = 2 To 256  
    If datevalue(Cells(1, j).value) = datevalue(cbo_debut.Value) Then  
    DebutX = j 
    End If  
    Next j   
    For k = 2 To 256 
     If datevalue(Cells(1, k).Value) = datevalue(cbo_fin.Value) Then  
    FinX = k 
    End If  
    Next
    Regarde du coté de ta valeur j et k si tu as la bonne valeur quand meme oarce que le problème la c'est que si a 256 il trouve ta date il va prendre la valeur a cette ligne la, alors que c'est peut etre pas celle la que tu veux
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 89
    Par défaut
    Oui apparement je ne savais pas comment on utilisais DateValue (Dsl la première fois c'est jamais simple !)

    Quand j'utilise ça, il me dis type mismatch...

    Est-ce dû au Format de la date ???

    Merci

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    type Mismach quoi ?

    Oui ça doit etre du a ton format de date

    juste avant ta boucle, met un msgbox sur "Cells(1, 1).value" et"cbo_debut.Value" pour voir les valeurs qu'elles ont pour voir si c'est déja un bon format de date ou non, et voir ce que ça donne
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  17. #17
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    bonjour,
    essais ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    For j = 2 To 256  
    If datevalue(Cells(1, j).value) = cbo_debut.Value Then  
    DebutX = j 
    End If  
    Next j   
    For k = 2 To 256 
     If datevalue(Cells(1, k).Value) = cbo_fin.Value Then  
    FinX = k 
    End If  
    Next
    car je ne suis pas sur que la fonction date s applique directement a un combo

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 89
    Par défaut
    Alors,

    illight, le test c'étais une bonne idée, mais les deux boites de dialogue (sur la combobox et dans la 1ere cellulle) renvoi la même date !

    Patbou, j'avais pensé pareil que toi donc j'ai essayé mais là non plus il me reste sur une erreur 13 : Type Mismatch sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set r1 = Sheets("Data").Range(Cells(1, DebutX), Cells(1, FinX))
    DebutX et FinX renvoient 0 donc j'imagine que c'est parce qu'il n'à trouvé aucune valeur correspondante...
    c'est pourquoi je pense que c'est un problème de format... Mais j'ai déjà réglé mon format dans la combobox et c'est le mm que dans ma feuille !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      For X = 2 To 256
         If Cells(1, X).Value = "" Then
        Else
        cbo_fin.AddItem Format(Sheets("Data").Cells(1, X), "mm/dd/yyyy")
          End If
          Next X
    Ca va me rendre chèvre ce format !!!

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Si pour DebutX il te trouve 0 c'est grave déja car tu pourra pas aller plus loin

    je crois que l'on avait déja rencontré dans une combobx ce genre d'erreur faudrait que je retrouve le post..Je crois par ailleurs que c'était Ousk qui avait trouvé une solution mais je suis pas sur mais essayer de trouver
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 89
    Par défaut
    Oui il est claire que c'est un problème de date car si je garde la même boucle avec un Value tout bête et du texte il me construit mon graph sans pb ...

    Je chercher aussi de mon côté, j'avoue que c'est bizare la date qu'il renvoi est la même !!

    Mais surtout, les valeurs qui sont insérée proviennet directement du tableau, donc normallement il devrait les reconnaître puisqu'il les copient lui même...

    @+

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/06/2014, 15h55
  2. [XL-2010] Run time error 1004 Application defined or object defined
    Par AmbreM dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/09/2013, 18h00
  3. Application-defined or object-defined error
    Par Vivi127 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/09/2011, 12h42
  4. Réponses: 1
    Dernier message: 20/02/2010, 08h03
  5. [XL-2003] Error 1004 - Application-defined or object-defined
    Par DaRisK dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/05/2009, 19h49

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