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 :

Code erreur 13 avec cellule qui contient du texte [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 18
    Par défaut Code erreur 13 avec cellule qui contient du texte
    Bonjour à tous,

    J'ai créée une macro qui permet, si la cellule dans la colonne T contient du texte, d'envoyer un mail aux personnes choisies.

    Pour l'envoi de mail c'est bon mais la condition pour vérifier le contenu de la cellule ne fonctionne pas.
    Il y a le message : Erreur d'exécution 13 : Incompatibilité de type

    La ligne en gras est celle qui se présente en jaune suite au débogage.

    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
    Sub SendEmail_TH()
    '
    ' SendEmail Macro
    
    'Set olApp = CreateObject("outlook.application")
    Dim Msg As Variant
    Dim Mot_clé1 As Variant
    Dim Mot_clé2 As Variant
    Dim Mot_clé3 As Variant
    Dim Ecart As Variant
    
    'mail
    'Dim olApp As Outlook.Application
    'Dim olMail As Outlook.MailItem
    'Set olMail = olApp.CreateItem(olMailItem)
    
    
    With Worksheets("44")
        For Each Mots_clés In .Range("T5:T" & .Range("D" & Rows.Count) & .Range("A" & Rows.Count).End(xlUp).Row)
        
    Mot_clé1 = "*MANQUANT*"
    Mot_clé2 = "*COMPLETER*"
    Mot_clé3 = "*RENOUVELER*"
    
            If Range("T5").Value Like Mot_clé1 Or Mot_clé2 Or Mot_clé3 Then
            'Range("T5").Value Like "*MANQUANT*" Or "*RENOUVELER*" Or "*COMPLETER*" Then
            
            Msg = Msg & Cell.Offset(0, -19) & " - " & Cell.Offset(0, -16) & Chr(10) 'Chr(10) = saut de ligne
            MsgBox Msg
            
            Else
           
            MsgBox "ok"
            
            End If
                          
        Next Mots_clés
        
    End With
            
        'With olMail
        
      '.To = Worksheets("Accueil").Range("N13").Value
      '.CC = Worksheets("Accueil").Range("N14").Value
     ' .Subject = "Ecart du 44 : TH et/ou TQ " & Format(Date - 1, "dd-mm-yyyy")
     ' .Body = Msg
      
     '  .Send
        
    
       'End With
       
    End Sub
    Merci à ceux qui pourront m'apporter leur aide

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Remplace "Value" par "Text" et met la condition complète (avec le Like) pour TOUS les mots clé.

    VBA, ça ressemble à de l'anglais, mais ça ne permet pas autant de souplesse dans l'expression.

  3. #3
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("T5").Value Like Mot_clé1 Or Mot_clé2 Or Mot_clé3 Then
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("T5").Value Like Mot_clé1 Or Range("T5").Value Like Mot_clé2 Or Range("T5").Value Like Mot_clé3 Then

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    on n'écrit pas (exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If toto like "*abc* or "*xyz*" ' etc ...
    Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If toto like "*abc*" or toto like "*xyz*" ' etc ...
    Soit, d'une manière générale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If expression1 or expression2 'etc ..
    .

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 18
    Par défaut
    Merci il n'y a plus d'erreur

    Par contre j'ai un autre problème qui se pose...

    Lorsque j'exécute la macro il y a toujours la msgbox "ok" qui apparait alors que le but est d'afficher uniquement les données sélectionnées des lignes dont la cellule en colonne T contient du texte.

    Je sais pas si c'est clair

  6. #6
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Sort le MsgBox de la boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For blablabla
        Msg = Msg & Cell.Offset(0, -19) & " - " & Cell.Offset(0, -16) & Chr(10) 'Chr(10) = saut de ligne
    Next
    MsgBox Msg

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    MsgBox provoque TOUJOURS un point d'arrêt donc propose à minima un bouton Ok pour relancer après ce point d'arrêt.

    Si tu veux uniquement afficher des données sans arrêter la macro, tu peux les faire afficher dans la fenêtre d'exécution avec un Debug.Print.
    Perso, j'use et abuse de cette instruction bien pratique pour suivre le déroulement d'un code.

  8. #8
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 18
    Par défaut
    Ca donnerait ça ? Mais il n'y a pas de Next sans For ...

    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 Each Mots_clés In .Range("T5:T" & .Range("D" & Rows.Count) & .Range("A" & Rows.Count).End(xlUp).Row)
     
    Mot_clé1 = "*MANQUANT*"
    Mot_clé2 = "*COMPLETER*"
    Mot_clé3 = "*RENOUVELER*"
     
            If Range("T5").Text Like Mot_clé1 Or Range("T5").Text Like Mot_clé2 Or Range("T5").Text Like Mot_clé3 Then
            'Range("T5").Value Like "*MANQUANT*" Or "*RENOUVELER*" Or "*COMPLETER*" Then
     
            Msg = Msg & Cell.Offset(0, -19) & " - " & Cell.Offset(0, -16) & Chr(10) 'Chr(10) = saut de ligne
     
            Next 
             MsgBox Msg
     
     
            End If
     
        Next Mots_clés
    Citation Envoyé par pijaku Voir le message
    Sort le MsgBox de la boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For blablabla
        Msg = Msg & Cell.Offset(0, -19) & " - " & Cell.Offset(0, -16) & Chr(10) 'Chr(10) = saut de ligne
    Next
    MsgBox Msg

  9. #9
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    oulala...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    With Worksheets("44")
    For Each Mots_clés In .Range("T5:T" & .Range("D" & Rows.Count) & .Range("A" & Rows.Count).End(xlUp).Row)
        Mot_clé1 = "*MANQUANT*"
        Mot_clé2 = "*COMPLETER*"
        Mot_clé3 = "*RENOUVELER*"
        If .Range("T5").Text Like Mot_clé1 Or .Range("T5").Text Like Mot_clé2 Or .Range("T5").Text Like Mot_clé3 Then
            'Range("T5").Value Like "*MANQUANT*" Or "*RENOUVELER*" Or "*COMPLETER*" Then
            Msg = Msg & Cell.Offset(0, -19) & " - " & Cell.Offset(0, -16) & Chr(10) 'Chr(10) = saut de ligne
        End If
    Next Mots_clés
    MsgBox Msg
    End With

  10. #10
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 18
    Par défaut
    Merci beaucoup !!

    Par contre rien ne s'affiche dans le Msgbox hors la ligne que j'ai mis en gras est censée être utilisée pour afficher les informations souhaitées (situées en colonne A et D donc -19 et -16 par rapport à la colonne T)
    Peut-être un problème de placement du Msgbox dans la condition?

    Citation Envoyé par pijaku Voir le message
    oulala...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    With Worksheets("44")
    For Each Mots_clés In .Range("T5:T" & .Range("D" & Rows.Count) & .Range("A" & Rows.Count).End(xlUp).Row)
        Mot_clé1 = "*MANQUANT*"
        Mot_clé2 = "*COMPLETER*"
        Mot_clé3 = "*RENOUVELER*"
        If .Range("T5").Text Like Mot_clé1 Or .Range("T5").Text Like Mot_clé2 Or .Range("T5").Text Like Mot_clé3 Then
            'Range("T5").Value Like "*MANQUANT*" Or "*RENOUVELER*" Or "*COMPLETER*" Then
            Msg = Msg & Cell.Offset(0, -19) & " - " & Cell.Offset(0, -16) & Chr(10) 'Chr(10) = saut de ligne
        End If
    Next Mots_clés
    MsgBox Msg
    End With

  11. #11
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Forcément.
    Qu'est ce que c'est que ce Cell?
    Il ne correspond à rien.
    Remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Msg = Msg & Cell.Offset(0, -19) & " - " & Cell.Offset(0, -16) & Chr(10) 'Chr(10) = saut de ligne
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Msg = Msg & Mots_clés.Offset(0, -19) & " - " & Mots_clés.Offset(0, -16) & Chr(10) 'Chr(10) = saut de ligne

  12. #12
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 18
    Par défaut
    Même en remplaçant Cell par Mots_clés le Msgbox et donc le mail restent vident.

    Mais je me suis peut-être mal exprimée alors je vais réessayer en transmettant en PJ un exemple de mon fichier.

    Le but est, dans l'onglet "44", que la macro regarde dans toute la colonne T si les cellules contiennent du texte.

    Une fois la macro effectuée, dans le cas où les cellules contient du texte, un msgbox doit s'afficher avec les informations de la colonne A (44-Nantes dans l'exemple) + celles en colonne D (Nom du poseur) de tous les poseurs pour lesquels la cellule en colonne T contiendrait du texte.

    J'espère avoir été assez claire

    Citation Envoyé par pijaku Voir le message
    Forcément.
    Qu'est ce que c'est que ce Cell?
    Il ne correspond à rien.
    Remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Msg = Msg & Cell.Offset(0, -19) & " - " & Cell.Offset(0, -16) & Chr(10) 'Chr(10) = saut de ligne
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Msg = Msg & Mots_clés.Offset(0, -19) & " - " & Mots_clés.Offset(0, -16) & Chr(10) 'Chr(10) = saut de ligne
    Fichiers attachés Fichiers attachés

  13. #13
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Une question bien posée, c'est déjà 90% de chance d'obtenir une réponse correcte...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Vazy()
    Dim R As Range, C As Range, Msg As String
       With Sheets("44")
          Set R = .Columns(20).Cells.SpecialCells(xlCellTypeConstants) ' R est la plage des cellules non vides de la colonne T (20)
          For Each C In R  ' boucle sur toutes les cellules non vides
             Msg = Msg & .Cells(C.Row, 1).Value & " " & .Cells(C.Row, 4).Value & vbCrLf 'extrait le contenu situé (colonne 1, ligne de la cellule C) et (colonne 4, ligne de la cellule C)
          Next  'vbcrlf permet d'aller à la ligne...
       End With
       MsgBox Msg 'restitue le message
    End Sub

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Mot_clé1 Or Mot_clé2 Or Mot_clé3 ça c'est un booléen! Ce qui expliquerait l'erreur.
    En admettant Mot_cléX contiennent "texte*" une étoile.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
            If Range("T5").Value Like Mot_clé1 Or Range("T5").Value Like Mot_clé1  Mot_clé2 Or Range("T5").Value Like Mot_clé1 Mot_clé3 Then

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/01/2015, 18h30
  2. [XL-2007] Code pour selection de cellules qui ne fonctionne pas avec la fonction "Locked"
    Par coco.on.off dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/07/2014, 18h01
  3. calcul avec cellules qui contiennent du texte
    Par AKTAP dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/02/2014, 15h21
  4. Réponses: 4
    Dernier message: 16/04/2007, 00h25
  5. (jsp) problème avec sql qui contient la date
    Par future dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 31/08/2005, 16h18

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