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 13, Type de Codage


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 28
    Par défaut Erreur 13, Type de Codage
    Bonjour à toutes et à tous,

    Voilà j'ai une erreur de type de codage sur mon code, et je ne vois pas comment je peux le résoudre. Quelqu'un pourrait-il m'aider s'il vous plait?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        For i = 2 To derligne14
            If IsError(RDV.Cells(i, "A").Value) = True Or RDV.Cells(i, "A").Value <> "" Then
                RDV.Cells(i, "N").Value = RDV.Cells(i, "A").Value & "/ 6444"
            End If
        Next i
    Cordialement,

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Si tu as une erreur en une cellule de la colonne A, que veux tu récupérer en colonne N?

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,

    tu sembles confondre les notations Range et Cells.

    Tout est disponible dans l'excellent cours de Bidou
    http://bidou.developpez.com/article/VBA/
    page 143
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Peut-être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = 2 To derligne14
            If (not IsError(RDV.Cells(i, 1).Value)) and (RDV.Cells(i, 1).Value <> "") Then
                RDV.Cells(i, 14).Value = RDV.Cells(i, 1).Value & "/ 6444"
            End If
        Next i
    Ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = 2 To derligne14
            If Isnumeric(RDV.Cells(i, 1).Value)) Then
                RDV.Cells(i, 14).Value = RDV.Cells(i, 1).Value & "/ 6444"
            End If
        Next i
    COrdialement,

    PGZ

  5. #5
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 28
    Par défaut
    En fait dans ma colonne A j'ai 3 types de valeurs:
    - numérique
    -vide
    - N/A

    Et je souhaite faire des concaténation seulement avec des cellules numérique.
    Je ne sais pas si je réponds à vos questions.

    Je crois avoir résolu le problème, j'ai juste modifié légèrement le code. Et cela fonctionne correctement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        For i = 2 To derligne14
            If IsError(RDV.Cells(i, "A").Value) = True Then
                RDV.Cells(i, "N").Value = ""
            Else
                If RDV.Cells(i, "A").Value <> "" Then
                    RDV.Cells(i, "N").Value = RDV.Cells(i, "A").Value & "/ 6444"
                End If
            End If
        Next i
    Toutefois, je ne le trouve pas encore rapide. Je dois l'exécuter sur plus de 6202 données.

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Les données de la colonne A sont des valeur en dure ou issues de formules?


    EDIT

    Bon, une proposition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Application.ScreenUpdating = False
    With RDV
        On Error Resume Next
        .Range("A2:A" & DerLigne14).SpecialCells(xlCellTypeConstants, 1).Offset(0, 13).FormulaR1C1 = "=RC[-13]&""/6444"""
        'Au cas en colonne A tu as des formules dont le résultat est numérique, utilise plutôt la ligne suivante
        '.Range("A2:A" & DerLigne14).SpecialCells(xlCellTypeFormulas, 1).Offset(0, 13).FormulaR1C1 = "=RC[-13]&""/6444"""
        On Error GoTo 0
        With .Range("N2:N" & DerLigne14)
            .Value = .Value
        End With
    End With

  7. #7
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 28
    Par défaut
    Les valeurs dans la colonne A sont le résultat d'une autre formule.

  8. #8
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Alors essaies ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Application.ScreenUpdating = False
    With RDV
        On Error Resume Next
        .Range("A2:A" & DerLigne14).SpecialCells(xlCellTypeFormulas, 1).Offset(0, 13).FormulaR1C1 = "=RC[-13]&""/6444"""
        On Error GoTo 0
        With .Range("N2:N" & DerLigne14)
            .Value = .Value
        End With
    End With
    RDV et DerLigne14 sont au préalable définies.

  9. #9
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 28
    Par défaut
    Excellent , çà fonctionne. Merci beaucoup.
    Et c'est plus rapide que mon code.

    @mercartoq

    Je te remercie pour ton aide.
    J'ai un autre petit soucis avec un autre code, toujours dans la même feuille RDV.
    Pour VBA le code est correct, mais lorsqu'on vérifie on se rencontre que c'est faux.
    Si tu le souhaite, je peux t'envoyer le fichier excel pour que tu l'analyses de plus prêt. Sinon voici le code: il se peut qu'il y ait une erreur dans le code mais je n'arrive pas à la visualiser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        ActiveCell.FormulaR1C1 = _
            "=IF(RC[-9]="""","""",IF(ISNA(VLOOKUP(RC[-9]&"" / 6444"",Attribut!C[-5]:C[-4],2,FALSE))=TRUE,"""",IF(OR(VLOOKUP(RC[-9]&"" / 6444"",Attribut!C[-5]:C[-4],2,FALSE)="""",VLOOKUP(RC[-9]&"" / 6444"",Attribut!C[-5]:C[-4],2,FALSE)="" ""),"""",VLOOKUP(RC[-9]&"" / 6444"",Attribut!C[-5]:C[-4],2,FALSE)+0)))"
        RDV.Cells(2, "J").Select
        Selection.AutoFill Destination:=Range(RDV.Cells(2, "J"), RDV.Cells(derligne14, "J")), Type:=xlFillDefault
        Range(RDV.Cells(2, "J"), RDV.Cells(derligne14, "J")).Select
    Meric encore.

    Cordialement,

  10. #10
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Une autre question = un autre sujet. Règles du forum obligent

    Essaies ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With RDV
        .Range(.Cells(2, "J"), .Cells(DerLigne14, "J")).FormulaR1C1 = "=IF(RC[-9]="""","""",IF(ISNA(VLOOKUP(RC[-9]&"" / 6444"",Attribut!C[-5]:C[-4],2,FALSE)),"""",IF(OR(VLOOKUP(RC[-9]&"" / 6444"",Attribut!C[-5]:C[-4],2,FALSE)="""",VLOOKUP(RC[-9]&"" / 6444"",Attribut!C[-5]:C[-4],2,FALSE)="" ""),"""",VLOOKUP(RC[-9]&"" / 6444"",Attribut!C[-5]:C[-4],2,FALSE))))"
    End With

  11. #11
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 28
    Par défaut
    Tu as tout à fait raison.
    çà fonctionne!
    Je te remercie beaucoup et en espérant avoir de ton aide très prochainement.

    Bien à toi,

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

Discussions similaires

  1. [VB]erreur de type
    Par amel95140 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 25/01/2006, 14h51
  2. Réponses: 1
    Dernier message: 12/12/2005, 03h39
  3. [LG] Erreur de type incompatible dans assignment
    Par Tuxico dans le forum Langage
    Réponses: 4
    Dernier message: 03/12/2005, 21h06
  4. erreur Data type mismatch in criteria expression
    Par bachilbouzouk dans le forum ASP
    Réponses: 3
    Dernier message: 20/04/2005, 11h48
  5. [Agents services] Erreur de types imcompatibles
    Par ApollloCrid dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 14/04/2005, 19h47

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