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 :

Bloqué par "Invalid Qualifier"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut Bloqué par "Invalid Qualifier"
    Bonjour,

    Tout est dans le tire, je ne comprends pas ce qu'il faut changer dans le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        'Définition du type de compte
     
        Dim LastRow As Long, AccClass As Byte, Account As Range
            LastRow = Range("A65536").End(xlUp).Row
            AccClass = Left(Cells(Account), 1)
     
            For Each Account In Range("B2:B" & LastRow)
                If AccClass.Value = "5" Then Account.Offset(0, 1).Value = "R"
            Next Account
     
    End Sub
    Mon but, écrire "R" en Cx si 1er caractère de gauche de la cellule Bx est &gale à 5. Excel me renvoie "Invalid qualifier" à l'exécution, pourtant ça me semblait pas mal...
    Pouvez-vous m'aider SVP ?
    Merci d'avance !

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Par défaut
    Bonjour,
    je pense que le problème est que vous voulez définir AccClass avant d'avoir défini Account :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AccClass = Left(Cells(Account), 1)
    Ce n'est pas possible en VBA.

  3. #3
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut
    En effet, j'ai changé entre temps mais rien n'y fait, le code ne marche pas.
    Je vais essayer d'une autre manière...

    Merci quand même, ça m'a déja donné une piste et appris quelque chose de plus en VBA ^^

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Par défaut
    Et en déplaçant cette ligne rouge dans la boucle, ça ne marche pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        'Définition du type de compte
        
        Dim LastRow As Long, AccClass As Byte, Account As Range
            LastRow = Range("A65536").End(xlUp).Row
                    
            For Each Account In Range("B2:B" & LastRow)
                AccClass = Left(Cells(Account), 1)
                If AccClass.Value = "5" Then Account.Offset(0, 1).Value = "R"
            Next Account
        
    End Sub
    Bon j'ai modifié un peu le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Dim LastRow As Long, AccClass As String, Account As Range
            LastRow = Range("A65536").End(xlUp).Row
                    
            For Each Account In Range("B2:B" & LastRow)
                AccClass = Left(Account.Value, 1)
                If AccClass = "5" Then Account.Offset(0, 1).Value = "R"
            Next Account
    Tout d'abord le type de AccClass, car la fonction Left renvoie une string et pas un byte.
    Puis j'ai utilisé directement Account.Value, au lieu de cells(Account...)
    Enfin AccClass étant une string et pas un objet, il n'a pas de propriété .value (ça aurait été pareil s'il avait été un byte).
    Là ça tourne, après je ne sais si ça fait exactement ce qui est voulu

  5. #5
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut
    J'ai cru que j'allais devenir dingue ! Je viens juste de me connecter et je remplace mon code par le premier que tu as posté (celui de ta 2ème réponse). J'essaye et ça ne fait rien, je reviens à peine deux minutes plus tard, je recopie le code (car j'avais essayé de le modifer mais je voulais repartir de ta base) du dernier post (pensant que c'était le même) et là ça fonctionne !
    Donc merci beaucoup car donc, ça marche et en plus c'est exactement le résultat voulu.
    Ce qui m'agac plus : Je débute en VBA, j'essaye de faire des bouts de code, je lis les tutos et tout, mais rien à faire, je suis pas suffisamment doué pour trouver tout seul les corrections à apporter. Je doute d'y arriver un jour. En tout cas merci, celui-là fonctionne et je pense qu'il m'aidera dans la construction de mes boucles futures !

    Bonne fin de journée !

    Runsh

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Par défaut
    Ce n'est pas une histoire d'être doué, il suffit de pratiquer et petit à petit les choses se mettent en place
    Le plus dur c'est au début, alors courage

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

Discussions similaires

  1. Site sur CD - javascript bloqué par SP2
    Par loutente dans le forum Général Conception Web
    Réponses: 16
    Dernier message: 17/05/2005, 15h22

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