Partager via

VBA erreur d'exécution- run-time error 9

Anonyme
2023-06-19T15:34:59+00:00

Salut la communauté,

C'est ma première intervention sur un forum Excel. J'ai le code suivant et il s'interrompt sur la première ligne en route avec le code run-time error 9

Sub CopyValueToPrevisionTableDriven()

    Dim ws As Worksheet

    Dim refTable As ListObject

    Dim refRow As ListRow

    Dim sourceSheet As Worksheet

    Dim targetSheet As Worksheet

    Dim sourceCell As Range

    Dim targetCell As Range

    Set ws = ThisWorkbook.Worksheets("Data Source")

    Set refTable = ws.ListObjects("Copy_A_to_B")

    For Each refRow In refTable.ListRows

Set sourceSheet = ThisWorkbook.Worksheets(refRow.Range(1, 1).Value)

        Set targetSheet = ThisWorkbook.Worksheets(refRow.Range(1, 2).Value)

        Set sourceCell = sourceSheet.Range(refRow.Range(1, 3).Value)

        Set targetCell = targetSheet.Range(refRow.Range(1, 4).Value)

        targetCell.Value = sourceCell.Value

        Application.CutCopyMode = False

    Next refRow

End Sub

The run time error 9:   Subscript out of range is an error we encounter in VBA when we try to reference something or a variable that does not exist in a code.

Toutes les variables sont correctement déclarées.
Je ne sais pas ce qui en est la cause.

Microsoft 365 et Office | Excel | Autres | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

6 réponses

  1. DanielCo 107.7K Points de réputation
    2023-06-19T17:54:15+00:00

    Certainement, tu n'as pas de feuille nommée "Sélection". Si ça semble malgré tout le cas, vérifie qu'il n'y a pas d'espace ou ne caractère non affichable. Sinon, quand le code plante, c'est l'image de la fenêtre des variables locales :

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2023-06-19T17:22:23+00:00

    Merci beaucoup Daniel pour tes efforts.

    1. Alors pourquoi selon toi le code ne fonctionne-t-il pas ?
    2. Ta capture d'écran "Varible locales", comment as-tu fait pour obtenir cela ? Est-ce une fenêtre "Watches" ? Cela me semble très utile pour débugger.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. DanielCo 107.7K Points de réputation
    2023-06-19T17:11:45+00:00

    D'après l'image, refRow.Range(1, 1).Value est égal à "sélection" :

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2023-06-19T16:53:50+00:00

    Dans la syntaxe de ThisWorkbook.Worksheets(refRow.Range(1, 1).Value) où devrait être placé le nom de la feuille ws ? la feuille "Data Source" est la variable ws

    Set ws = ThisWorkbook.Worksheets("Data Source")

    Image

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. DanielCo 107.7K Points de réputation
    2023-06-19T15:48:33+00:00

    Bonjour,

    Apparemment, il n'y a pas de feuille ayant le nom figurant dans :

    efRow.Range(1, 1)

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire