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 Exécution: Incompatibilité de type: [XL-2010]


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
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 49
    Par défaut Erreur Exécution: Incompatibilité de type:
    Bonjour,

    j'ai un petit problème avec mon code. j'ai un message d'erreur: incompatibilité de type:

    voici le code qui fonctionnais avec une table plus petite (200 lignes) maintenant avec la table de 5000 ligne le code bug!

    pouvez vous m'expliquer c'est quoi cette erreur? l'erreur est dans cette ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(i, 6) = "" Then

    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 EntireRow2()
    'supprimer les lignes dont le nb de cdt est vide
     Dim wb As Workbook
    Dim i
     
    Set wb = Workbooks.Open("Z:\VBA\base-macro.xlsx")
     
         For i = wb.Sheets(2).Range("A" & Rows.count).End(xlUp).Row To 1 Step -1
                 If Cells(i, 6) = "" Then
                 Cells(i, 1).EntireRow.Delete
                  End If
           Next i
           wb.Close saveChanges:=True
           MsgBox ("task complete!!!")
        End Sub
    sachant que si j'écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(i, 7) = "" Then
    donc colonne 7 au lieu de la 6, le code fonctionne, pas de message d'erreur. Trop bizarre!! je peux pas utiliser la 7 car la 6 est ma condition! donc je veux bien que ça fonctionne pour la colonne 6!

    Savez vous pourquoi ce problème?

    Merci d'avance pour les réponses.

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Bonjour,

    Quel est le contenu de ta cellule(i,6) au moment de l'erreur? (ce serait pas un #NULL par hasard?)
    Qu'est censé contenir ta colonne 6 ? des nombres? du texte?

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 49
    Par défaut
    Citation Envoyé par halaster08 Voir le message
    Bonjour,

    Quel est le contenu de ta cellule(i,6) au moment de l'erreur? (ce serait pas un #NULL par hasard?)
    Qu'est censé contenir ta colonne 6 ? des nombres? du texte?
    c'est censé contenir des nombres et des cellules vides.
    je peux pas savoir où le code bug comme j'ai 5000 lignes! je peux ?

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    sans penser que ça soit lié, il est toujours important d'indiquer la propriété souhaitée

    ici, je pense pour la propriété .Value de ton Cells() (voir .Text)

    les objets Range n'ont pas de propriété par défaut, contrairement à l'idée courante. C'est VBA qui choisis la plus appropriée, quitte à se tromper une fois sur 1000.

    Plusieurs discussions à ce sujet ont déjà été abordées, notamment les cas où .Text viendra à la place de .Value

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Au moment de l'erreur tu clic sur debug, la ligne qui pose problème est normalement en jaune, si tu met ton curseur sur le i, il devrait t'afficher sa valeur.
    Tu peux aussi le voir dans la fenetre des variables locale (menu view -> local windows)

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 49
    Par défaut
    Citation Envoyé par halaster08 Voir le message
    Bonjour,

    Quel est le contenu de ta cellule(i,6) au moment de l'erreur? (ce serait pas un #NULL par hasard?)
    Qu'est censé contenir ta colonne 6 ? des nombres? du texte?
    J'ai trouvé que dans la ligne 6321 il y a "#VALEUR!" est ce que c'est ça le problème?

    oui le problème est sur ce i = 6321! je fais comment alors? j'efface cette ligne oubien il y a une autre solution pour que le code le bug pas avec tel valeur?

  7. #7
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Citation Envoyé par S.Mag Voir le message
    J'ai trouvé que dans la ligne 6321 il y a "#VALEUR!" est ce que c'est ça le problème?
    C'est fort possible.

    Voir la réponse de joe:
    Citation Envoyé par joe.levrai Voir le message

    les objets Range n'ont pas de propriété par défaut, contrairement à l'idée courante. C'est VBA qui choisis la plus appropriée, quitte à se tromper une fois sur 1000.

    Plusieurs discussions à ce sujet ont déjà été abordées, notamment les cas où .Text viendra à la place de .Value
    J'ai eu un souci similaire récemment (a cause d'un #NULL) et remplacer .value par .text m'as permis de le résoudre

  8. #8
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    C'est bien #VALEUR! le problème, utilises .text qui interroge le contenu "visuel" de la cellule et pas la valeur stockée ... car #VALEUR! n'est pas une "valeur" mais une erreur

  9. #9
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 49
    Par défaut Résolu
    Citation Envoyé par halaster08 Voir le message
    C'est fort possible.

    Voir la réponse de joe:

    J'ai eu un souci similaire récemment (a cause d'un #NULL) et remplacer .value par .text m'as permis de le résoudre
    wow!! ça marche parfaitement! merci infiniment!

  10. #10
    Invité
    Invité(e)
    Par défaut
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If trim("" & Cells(i, 6)) = ""Then

  11. #11
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = wb.Sheets(2).Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
        If Not IsError(Cells(i, 6)) Then
             If Cells(i, 6) = "" Then Cells(i, 1).EntireRow.Delete
        End If
    Next

  12. #12
    Invité
    Invité(e)
    Par défaut
    tu veux tester tous le type d'erreur?

  13. #13
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 49
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    tu veux tester tous le type d'erreur?
    J'ai pas compris! c'est à dire?

  14. #14
    Invité
    Invité(e)
    Par défaut
    Nom : Sans titre.png
Affichages : 199
Taille : 13,0 Ko

  15. #15
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 49
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Nom : Sans titre.png
Affichages : 199
Taille : 13,0 Ko
    Ah wow! je savais pas ça et surtout je ne savais pas que se sont des erreurs ces trucs mdr!
    merci bcp!
    donc la partout j'ajoute au lieu de ? mdr je suis débutante avec VBA!

  16. #16
    Invité
    Invité(e)
    Par défaut
    non IsError!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = wb.Sheets(2).Range("A" & Rows.Count).End(xlUp).Row To1Step-1
        If Not IsError(Cells(i, 6)) Then
             If Cells(i, 6) = "" Then Cells(i, 1).EntireRow.Delete
        End If 
    Next

  17. #17
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Je serai tenté de dire que le test IsError est superflu.

    il cherche des cellules vides, or en cas d'erreur le .Text va rapatrier le String d'affichage du type d'erreur ... qui ne sera pas vide

  18. #18
    Invité
    Invité(e)
    Par défaut
    Exact mais considère t-elle une erreur comme un string valide (ce qui s'emble évident dans le code que j'ai proposé) ou un vide? La c'était à elle de le dire!

  19. #19
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Deux précautions valent effectivement mieux qu'une seule, t'as raison d'aller au bout de la chose


    Ps : désolé, je pensais que l'auteure de la discussion était un garçon

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

Discussions similaires

  1. [A-07] Erreur n°13 : Incompatibilité de type
    Par Leimi dans le forum VBA Access
    Réponses: 2
    Dernier message: 17/03/2009, 11h15
  2. Erreur d'incompatibilité de types
    Par étoile de mer dans le forum Débuter
    Réponses: 27
    Dernier message: 01/06/2008, 17h14
  3. DLookup, Erreur d'incompatibilité de type (13)
    Par athos7776 dans le forum VBA Access
    Réponses: 5
    Dernier message: 08/08/2007, 17h25
  4. Erreur 13 : incompatibilité de type
    Par Donatelli dans le forum Access
    Réponses: 1
    Dernier message: 03/01/2007, 12h19
  5. [VBA-A] ADO - Erreur 13 Incompatibilité de Type
    Par db30 dans le forum VBA Access
    Réponses: 4
    Dernier message: 15/04/2006, 14h30

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