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 :

Erreur de compatibilité de type


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut Erreur de compatibilité de type
    Bonjour,

    Je débute tout juste en vba et j'ai écrit un programme dont je n'arrive pas à trouver l'erreur. Pourtant, quand j'essaye de l'exécuter il me dit qu'il y a une erreur de compatibilité de type, alors que j'ai tout mis en chaine de caractères...
    Quelqu'un pourrait-il m'aider svp?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Par_site()
      Dim site As String
        For ligsite = ligstartsite To ligendsite
            site = Sheets("Par_site").Cells(ligsite, colsite).Value
            For LigAff = ligstartpaf To ligendpaf
            If InStr((CStr(ThisWorkbook.Sheets("Liste affectation").Cells(LigAff, colaffect).Value)), CStr(site), 1) <> 0 Then              Sheets("Par_site").Cells(ligsite, colnbap).Value = Sheets("Par_site").Cells(ligsite, colnbap).Value + 1
                    Sheets("Par_site").Cells(ligsite, colnbh).Value = Sheets("Par_site").Cells(ligsite, colnbh).Value + Sheets("Liste affectation").Cells(LigAff, colqtéh).Value
                End If
            Next
        Next
    End Sub
    Désolée, je ne sais pas comment insérer du code...

    Encore merci!!!!!

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 57
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If InStr((CStr(ThisWorkbook.Sheets("Liste affectation").Cells(LigAff, colaffect).Value)), CStr(site), 1) <> 0 Then
    Bonjour! Je ne suis pas certain de ce que j'avance, et je n'ai pas le moyen de tester sous la main, mais peut-etre devrais tu remplacer <>0 par <>NULL ou <>"".
    A bientot!

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut
    Merci!

    Malheureusement, cela me met toujours erreur de type 13, incompatibilité de type...
    Et puis quand je clique sur débogage, cela me surligne la ligne que j'ai mise ne rouge dans le message...

    Je ne comprend vraiment pas

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Que retourne le code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (CStr(ThisWorkbook.Sheets("Liste affectation").Cells(LigAff, colaffect).Value))

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut
    Bonjour,

    Il retourne une liste d'abréviations qui correspondent pour moi à des symboles de lieux. Les cases sont soient vides, soient de ce type:
    AB - CDE - EFG - IJK - LMN - OPQ (AB est un lieu, IJK en est un autre...)
    Et en fait pour une abréviation (soit un site) je souhaite voir le nombre de fois où il apparaît dans la colonne dont je dispose dans une autre feuille.
    Du coup je cherche si la chaine de caractères correspondantes se trouve dans les chaînes existantes dans les cases.

    J'espère avoir été claire...

    Merci

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    La première instruction de INSTR est la caractère de démarrage.
    Si ta formule retourne une chaine de caractère tu as une erreur de type 13

    Si je comprend bien tu veux connaitre combien de fois se trouve ta valeur "AB" dans ta colonne.
    Si c'est le cas, la formule NB.SI fait cela

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut
    Merci!

    Par contre, mon problème est le suivant: dans chaque case de ma colonne j'ai plusieurs sites (chaine de caractère de la forme: "AB - CDE - EFG etc)! Et je n'ai jamais (ou rarement) la même combinaison dans les cases...

    Du coup, je cherche par exemple mon site AB dans des cases qui contiennent plusieurs sites différents!
    Je ne sais pas si je suis suffisamment claire? Je ne pense donc pas que NB.SI puisse effectuer cette recherche au sein d'une chaine de caractère..

    Par ailleurs ma fonction InStr doit me retourner 0 si mon site "AB" n'est pas dans ma chaine de caractère de chaque case et sinon elle doit me retourner la position de "A" dans ma chaine de carctère! Donc elle ne me retourne pas une chaine de carctère mais un integer

    Encore merci pour votre aide!

  8. #8
    Membre éprouvé
    Homme Profil pro
    Consultant comptable
    Inscrit en
    Mai 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant comptable

    Informations forums :
    Inscription : Mai 2011
    Messages : 137
    Par défaut
    comme l'as dis jfontaine cherche du coté de nb.si (ou application.worksheetfunction.countif en vba)

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut
    Merci, effectivement, je n'avais pas bien étudié la syntaxe de la fonction!
    Je vais essayer ainsi!

    Bonjour,

    je reviens vers vous car j'ai utilisé la fonction NB.SI comme vous me l'avez indiqué. Cel ane me donne malheureuement pas le bon résultat.
    Mon problème se pose au niveau de la syntaxe. En effet, j'ai une variable qui doit prendre pour valeur la chaîne de caractère du site de la ligne parcourue (cf. boucle for). C'est donc une variable que je veux retrouver dans des chaines de caractères.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.WorksheetFunction.CountIf(myRange, site)
    Site est donc ma variable et je souhaiterais indiquer qu'il peut y avoir une chaine de caractère avant et/ou après le site (ex: AB oeut se trouver dans une case type FGH-JIL-AB-TOP)

    Merci d'avance pour votre aide

  10. #10
    Membre éprouvé
    Homme Profil pro
    Consultant comptable
    Inscrit en
    Mai 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant comptable

    Informations forums :
    Inscription : Mai 2011
    Messages : 137
    Par défaut
    sans voir ton nouveau code ca va être tres compliqué surtout que je ne comprends pas trop ton probleme site étant ta variable, dans une boucle tu peux relancer tes variables autant de fois que tu veux il suffit juste de bien parametrer tes boucles...

  11. #11
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut
    En fait mon problème c'est juste que je veux indiquer que le programme doit rechercher site entre deux chaines de caractères potentielles avant et après la variable site...
    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Dim site As String
        Dim myRange As Range
        For ligsite = ligstartsite To ligendsite
            site = Sheets("Par_site").Cells(ligsite, colsite).Value
            Set myRange = Worksheets("Liste affectation").Range("N3:N1218")
            Sheets("Par_site").Cells(ligsite, colnbap).Value = Application.WorksheetFunction.CountIf(myRange, "*site*")
        Next
    Là j'ai mis des "* pour dire qu'il y a du texte avant ma variable mais du coup site devient ce que l'on cherche alor sque je veut chercher le contenu de site..
    Et quand je mets "*"site"*" cela me met une erreur...

    J'essaye d'êtrel aplus claire possible mais je débute vraiment

  12. #12
    Membre éprouvé
    Homme Profil pro
    Consultant comptable
    Inscrit en
    Mai 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant comptable

    Informations forums :
    Inscription : Mai 2011
    Messages : 137
    Par défaut
    et si tu fais ca ?
    je suis pas sur d'avoir parfaitement compris ta demande par contre
    (non testé)

    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
     
    sub touteslescolonnes
    toto("n")
    toto("o")
    etc....
    endsub
     
    sub toto(variable)
    Dim site As String
    Dim myRange As Range
    For ligsite = ligstartsite To ligendsite
    site = Sheets("Par_site").Cells(ligsite, colsite).Value
    Set myRange = Worksheets("Liste affectation").range(variable & "3:" & variable  & "1218")
    Sheets("Par_site").Cells(ligsite, colnbap).Value = Application.WorksheetFunction.CountIf(myRange, "*site*")
    Next

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

Discussions similaires

  1. #N/A integer et string: erreur de compatibilité de types
    Par Many31 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/01/2008, 14h51
  2. [PHP MySQL] Erreur execution requête de type INSERT
    Par Pfeffer dans le forum Requêtes
    Réponses: 6
    Dernier message: 23/01/2006, 17h38
  3. Erreur de conflit de type
    Par Jhulk dans le forum C
    Réponses: 15
    Dernier message: 16/01/2006, 15h47
  4. Erreur de conversion de type Null en String
    Par navis84 dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/07/2005, 15h25
  5. [JNI] Compatibilité de types
    Par rabobsky dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 11/07/2005, 12h01

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