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 :

Identification @. Incompatibilité 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 confirmé
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2013
    Messages : 50
    Par défaut Identification @. Incompatibilité type
    Bonjour, je vous écris pour vois si vous pouvez m’illuminer avec vos connaissances . J'utilise une nouvelle fonctionnalité pour moi et c'est le "format" pour copier le valeur de la colonne 1 dans la colonne 13 et après ajouter devant les caractères "CLE" devant le contenue de la cellule.
    Le problème est-ce que ça me donne "incompatibilité de type" juste après le For

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    'Etape 3: déclaration variables pour trouver ligne clè identifié comme "@@ " et l'introduire dans la colonne 13 avec "CLE " devant le contenu. 
    DligneVid = Range("A" & Rows.Count).End(xlUp).Row 'ligne déja déclare avant dans la boucle eliminer lignes vides
    PligneB = Range("A35").End(xlDown).Row 'aussi variable déja utilisée
    Dim Cl As String
    Cl = "@@ "
     
     
    For Cl = DligneVid To PligneB Step -1
        If Format(Left(Cells(Cl, 1), 3)) Then
           Cells(Cl, 13).Value = Cells(Cl, 1).Value
           Format(Left(Cells(Cl, 13), "CLE*")).Value
        End If
    Next Cl

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    L'erreur "incompatibilité de type" indique que tu as déclaré une variable selon un certain type de variable, mais qu'ensuite, tu l'utilises pour des fonctionnalités qui n'existent pas pour ce type de variable. Dans ton cas, tu déclares
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Cl As String
    Cl = "@@
    String étant une chaine de caractères. Jusqu'ici, tout va bien.
    Ensuite tu veux faire une bouclé For sur Cl. La syntaxe de la boucle For est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To 3
        '...
    Next i
    Qui veut dire : pour i allant de 1 à 3 faire ...
    Or, toi tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Cl = DligneVid To PligneB Step -1
        '...
    Next Cl
    Soit, pour Cl allant de DligneVid à PligneB faire ... Sachant que DligneVid et PligneB sont des entier, mais Cl une chaine de caractère. Ca ne va pas !
    Pouruqoi déclares-tu Cl comme une chaine de caractère? Et pourquoi lui attribus-tu "@@" au début? T n'utilises jamais le fait que Cl vaut "@@" au début.

  3. #3
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2013
    Messages : 50
    Par défaut
    AH. J'ai mis Cl comme basse de ma boucle dans la ligne 9. Je pensai aussi utiliser les caractères dans la ligne 11. Pour ajouter au résultat les caractères "CLE". je continue a chercher. Merci

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Citation Envoyé par mvgalli Voir le message
    AH. J'ai mis Cl comme basse de ma boucle dans la ligne 9. Je pensai aussi utiliser les caractères dans la ligne 11. Pour ajouter au résultat les caractères "CLE". je continue a chercher. Merci
    Quand tu fais une boucle, tu n'as pas besoin de mettre une "base". C'est déjà dans la syntaxe de la boucle, puisque tu dis : pour i allant de x à y.

  5. #5
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2013
    Messages : 50
    Par défaut
    Je viens d'essayer un autre solution et j'arrive a faire tourner la boucle mais les caractères "@@ " contrairement à ce que je pensai, ne les reconnais pas. Tu sauras me dire une autre façon de identifier des qu'il a 2 numéros plus un espace? Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    'Etape 3: déclaration variables pour trouver ligne clè identifié comme "@@ " et l'introduire dans la colonne 13 avec "CLE " devant le contenu.
    DligneVid = Range("A" & Rows.Count).End(xlUp).Row 'ligne déja déclare avant dans la boucle eliminer lignes vides
    PligneB = Range("A35").End(xlDown).Row 'aussi variable déja utilisée
    Dim Cl As Range
    'Set Cl = "@@ " 'identification deux chiffres plus espace vide, ex: "01 "
     
    For Each Cl In Range(Cells(PligneB, 1), Cells(DligneVid, 1))
        Select Case Cl
        Case "@@ "
                Cells(Cl.Row, 13) = Cells(Cl.Row, 1).Value
                Insert.Format (Left(Cells(Cl, 13), "CLE *"))
        End Select
    Next Cl

  6. #6
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2013
    Messages : 50
    Par défaut
    Pardon, je n'ai pas encore lu ta réponse. Je vais voir ça et je reviens vers toi. Merci beaucoup!.

  7. #7
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Je ne sais pas si c'est la meilleur méthode, mais voici peut-être un moyen de vérifier que la valeur de la cellule est sous la forme "chiffre chiffre espace reste":
    utiliser la fonction Split. Si la cellule est sous le bon format, ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isNumeric(Split(cel.Value, " "))
    renverra True.
    Ensuite, il faudra vérifier qu'il y a bien que 2 chiffres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Len(Split(cel.Vlue, " "))
    doit renvoyer 2.

    Mis bout à bout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If isNumeric(Split(cel.Value, " ")) = True And Len(Split(cel.Vlue, " ")) = 2 Then
                 ' on fait ce qu'on a à faire
    End If

  8. #8
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Format(Left(Cells(Cl, 1), 3)) Then
    Peux-tu nous dire, en français, quelle est la condition que tu veux vérifier? La fonction Format renvoie une chaine de caractère (String). Dans ta condition, tu ne la compares à rien. Quelle est donc ta condition?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Format(Left(Cells(Cl, 13), "CLE*")).Value
    Que veux-tu faire ici? La propriété .Value ne s'applique pas à une chaine de caractère (mais à un Range, par exemple). Ensuite, Format est une fonction qui renvoie qqc. Quand tu utilises une fonctin qui renvoie qqc, il faut faire quelque chose avec ce qui est renvoyé. Tu ne peux pas juste écrire la fonction telle quelle. En maths, c'est comme si tu écrivais 1 + 1 sur une ligne sans rien. En maths, tu utilises toujours une signe égal quand tu appliques des fonctions, tu écriras par exemple : x = 1 + 1. C'est pareil en VBA. Quand tu utilises une fonction, tu l'utilies pour récupérer ce qu'elle renvoie.
    Si je comprend bien, ici c'est le moment où tu veux ajouter le mot "CLE" devant ta valeur. Pourquoi écris-tu "CLE*"? De plus, relis bien l'aide microsoft sur la fonction Left. Tu n'utilises pas la bonne syntaxe : le deuxième argument est un entier.
    Si tu veux rajouter "CLE " à l'avant du mot, il y a plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(Cl, 13).Value = "CLE " & Cells(Cl, 1).Value
    Ici tu concatènes "CLE " et la valeur de la cellule en colonne 1. La valeur de la cellule de la colonne 13 est alors égale à cette concaténeation.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    si tu nous éclairais sur la finalité peut-être?

    car pour tout dire j'ai rien compris!

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

Discussions similaires

  1. [XL-2010] Identification texte, copier dans un autre colonne. Incompatibilité type
    Par mvgalli dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 31/03/2017, 14h17
  2. Réponses: 3
    Dernier message: 06/06/2013, 13h45
  3. [XL-2003] erreur "incompatibilité types"
    Par ninikosim dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/04/2011, 14h56
  4. [AC-2003] Erreur Incompatibilité Type
    Par Zeltron24 dans le forum IHM
    Réponses: 4
    Dernier message: 21/01/2011, 16h56
  5. Patron de classe et identification du type du parametre
    Par frankgoestohollywood dans le forum Langage
    Réponses: 1
    Dernier message: 17/01/2011, 18h09

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