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 :

à quoi correspond l'erreur 2042?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 288
    Par défaut à quoi correspond l'erreur 2042?
    Bonjour, (ou rebonjour)

    j'ai une variable qui prend la valeur "erreur 2042" et cela me pose probleme dans l'execution de la macro.

    le code (un peu long):
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
     
    Sub Remplissage()
     
        Dim R_n_TWT As Integer, R_Channel As String, R_Selectivite As String, R_SSI_type As String, R_Panel As String
        Dim Lettre As String, Select_panel As String, Select_panel_plus As String, Select_panel_TWT As String, Index_TWT_WC As Variant
        Dim Channel As String, Selectivite As String, SSI_type As String
        Dim i As Integer, i_L As Integer, i_C As Integer, IndexL As Integer
        Dim R_Gain As Double
     
        'création des tableaux ampli-canal pour les 2 panneaux
        Sheets("Polar_X").Select
        Range("A1:AT50").Select
        Selection.Copy
        Sheets.Add
        ActiveSheet.Select
        ActiveSheet.Name = "South_Panel"
        Range("A1").Select
        ActiveSheet.Paste
        Sheets("Polar_Y").Select
        Range("A1:AT50").Select
        Selection.Copy
        Sheets.Add
        ActiveSheet.Select
        ActiveSheet.Name = "North_Panel"
        Range("A1").Select
        ActiveSheet.Paste
     
        'pour tous les SSI de "Satting_DLA"
        For IndexL = 388 To 545
            R_Gain = Worksheets("Satting_DLA").Cells(IndexL, "B")
            R_Selectivite = Worksheets("Satting_DLA").Cells(IndexL, "D")
            R_Channel = Worksheets("Satting_DLA").Cells(IndexL, "E")
            R_n_TWT = Worksheets("Satting_DLA").Cells(IndexL, "F")
            R_SSI_type = Worksheets("Satting_DLA").Cells(IndexL, "G")
            R_Panel = Worksheets("Satting_DLA").Cells(IndexL, "I")
     
        'selection du panneau
            If R_Panel = "N" Then
                Sheets("North_Panel").Activate
                Select_panel = "North_Panel"
            Else
                Sheets("South_Panel").Activate
                Select_panel = "South_Panel"
            End If
     
        'remplissage des niveaux entrées DLA nominaux
     
            If R_SSI_type = "P0_" Then
                Select_panel_plus = Select_panel & "!A3:AM3"
                Index_Select = Application.Match(R_Selectivite, Range(Select_panel_plus), 0)
                Selectivite = Worksheets(Select_panel).Cells(3, Index_Select)
                If Selectivite = "__" Then
                    Select_panel_plus = Select_panel & "!A4:AM4"
                    Index_Select = Application.Match(R_Channel, Range(Select_panel_plus), 0)
                        For i_C = 8 To 44
                            Lettre = Worksheets(Select_panel).Cells(i_C, Index_Select)
                                If Lettre = "N" Then
                                    Worksheets(Select_panel).Cells(i_C, Index_Select) = R_Gain & " (N)"
                                End If
                        Next i_C
                ElseIf Selectivite = R_Selectivite Then
                    For i_C = 8 To 44
                        Lettre = Worksheets(Select_panel).Cells(i_C, Index_Select)
                        If Lettre = "N" Then
                            Worksheets(Select_panel).Cells(i_C, Index_Select) = R_Gain & " (N)"
                        End If
                    Next i_C
                End If
     
            End If
     
        'remplissage des niveaux entrées DLA redondants
     
            If R_SSI_type = "P1L" Then
                Select_panel_plus = Select_panel & "!A3:AM3"
                Index_Select = Application.Match(R_Selectivite, Range(Select_panel_plus), 0)
                Selectivite = Worksheets(Select_panel).Cells(3, Index_Select)
                If Selectivite = "__" Then
                    Select_panel_plus = Select_panel & "!A4:AM4"
                    Index_Select = Application.Match(R_Channel, Range(Select_panel_plus), 0)
                        For i_C = 8 To 44
                            Lettre = Worksheets(Select_panel).Cells(i_C, Index_Select)
                                If Lettre = "R" Then
                                    Worksheets(Select_panel).Cells(i_C, Index_Select) = R_Gain & " (R)"
                                End If
                        Next i_C
                ElseIf Selectivite = R_Selectivite Then
                    For i_C = 8 To 44
                        Lettre = Worksheets(Select_panel).Cells(i_C, Index_Select)
                        If Lettre = "R" Then
                            Worksheets(Select_panel).Cells(i_C, Index_Select) = R_Gain & " (R)"
                        End If
                    Next i_C
                End If
     
            End If
     
        'remplissage des niveaux entrées DLA chemin worst case
     
            If R_SSI_type = "WCL" Then
                Select_panel_plus = Select_panel & "!A3:AM3"
                Select_panel_TWT = Select_panel & "!A1:A44"
                Index_Select = Application.Match(R_Selectivite, Range(Select_panel_plus), 0)
                Index_TWT_WC = Application.Match(R_n_TWT, Range(Select_panel_TWT), 0)
                Selectivite = Worksheets(Select_panel).Cells(3, Index_Select)
                If Selectivite = "__" Then
                    Select_panel_plus = Select_panel & "!A4:AM4"
                    Index_Select = Application.Match(R_Channel, Range(Select_panel_plus), 0)
                    Lettre = Worksheets(Select_panel).Cells(Index_TWT_WC, Index_Select)
                    If Lettre = "X" Then
                        Worksheets(Select_panel).Cells(Index_TWT_WC, Index_Select) = R_Gain & " (X)"
                    ElseIf Lettre = "" Then
                        MsgBox ("Il n'y a pas de croix (X) pour le canal " & R_Channel & " et pour le tube " & R_n_TWT)
                    End If
                ElseIf Selectivite = R_Selectivite Then
                    Lettre = Worksheets(Select_panel).Cells(Index_TWT_WC, Index_Select)
                    If Lettre = "X" Then
                        Worksheets(Select_panel).Cells(Index_TWT_WC, Index_Select) = R_Gain & " (X)"
                    ElseIf Lettre <> "X" Then
                        MsgBox ("Il n'y a pas de croix (X) pour le canal " & R_Channel & " et pour le tube " & R_n_TWT)
                    End If
                End If
     
            End If
     
     
        Next IndexL
     
    End Sub
    la ligne qui pose probleme c'est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Index_TWT_WC = Application.Match(R_n_TWT, Range(Select_panel_TWT), 0)
    la variable Index_TWT_WC prend la valeur "erreur 2042" qd le compteur IndexL arrive a 389 (soit la 2° valeur de la boucle for...)

    ce qui me parait etrange c'est que pour l'indice 388 tout a fonctionner correctement!

    precision : a l'origine Index_TWT_WC etait déclaré comme etant un integer mais je l'ai changé en variant pour voir ce qui y'avait dedans!

    quelqu'un aurait il une idee?

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour avoir l'erreur d'après son N° tu peux faire Msgbox error(2042)... mais ça m'étonnerait que ça te renseigne vraiment.
    As-tu essayer de bipasser 389 pour passer directement à 390 ? Juste pour voir si tu as un pb avec cette ligne. Pour ça, dans le dégugger, tu désignes Next comme instruction suivante et tu relances le code. Si tu as un pb avec la ligne suivante, ça pourrait te donner "une" indication. Laquelle ?
    Donc, à tout hasard...
    Bonne chance

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 288
    Par défaut
    je ne connaissais pas l'astuce du msgbox(erreur N°)!
    merci pour cette info!

    pour la 2° info : j'ai anticipé l'action...

    le probleme n'est pas que sur cette fameuse ligne 389 mais sur d'autres aussi.
    leur seul point commun c'est un numéro (qui semble défectueux).

    concretement je prend une partie d'une chaine de caractere qui doit me donner le numero d'un equipement (101, 102, 103,... 401, 402... et ainsi de suite)
    ce numero je le recherche dans une plagne de cellule et je recupere le numero de la ligne à laquel il se trouve (numero de ligne qui est sensé se trouver dans Index_TWT_WC.

    la variable Index_TWT_WC prend "erreur 2042" a chaque numero d'equipement se terminant par 1 (101, 201, 301...)

    je pense donc qu'il doit y avoir un petit probleme de caractere parasite (retour chariot peut etre?)

    voila!
    j'en suis la!

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/01/2012, 10h56
  2. A quoi correspond {app}
    Par Furius dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 14/10/2005, 12h20
  3. [Cookies] A quoi correspond document.cookie ?
    Par Linoa dans le forum Langage
    Réponses: 2
    Dernier message: 05/10/2005, 11h13
  4. [Rangs] A quoi correspond la mention VIP ?
    Par Manopower dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 30/08/2005, 11h40
  5. [OPERATEUR] à quoi correspond : ^?
    Par fabszn dans le forum Langage
    Réponses: 3
    Dernier message: 24/03/2005, 16h25

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