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 VBA en utilisant les données de 3 feuilles différentes d'un même classeur


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2017
    Messages : 17
    Points : 8
    Points
    8
    Par défaut Code VBA en utilisant les données de 3 feuilles différentes d'un même classeur
    Bonjour,

    Depuis ce matin je galère. Je dois écrire un code VBA en utilisant les données de 3 feuilles différentes d'un même classeur.
    J'ai essayé pas mal de choses, mais ça fini toujours par bloquer.
    Y a t'il des choses particulières à faire pour me permettre de réaliser ce code?

    J'utilise par exemple pour sélectionner des cellules: Worksheets("step 3").Range("D10") -> STEP 3 est le nom d'une des trois feuilles

    Merci de votre aide

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 755
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 755
    Points : 28 606
    Points
    28 606
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    cette ligne
    Worksheets("step 3").Range("D10") -> STEP 3
    n'est pas du code VBA.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2017
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    mon code VBA est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("step 3").Range("D10")

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 755
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 755
    Points : 28 606
    Points
    28 606
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    mon code VBA est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("step 3").Range("D10")
    Et bien ce code est incomplet
    Soit on passe la valeur de la cellule D10 de la feuille nommée step 3 à l'affichage par une fonction comme MsgBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Worksheets("step 3").Range("D10").Value
    soit à une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maValeur = Worksheets("step 3").Range("D10").Value
    soit encore à une autre cellule de la même feuille ou d'une autre feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("step 1").Range("A2").Value = Worksheets("step 3").Range("D10").Value


    ou bien on assigne la valeur d'une constante à cette cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("step 3").Range("D10").Value=20
    ou encore la valeur d'une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("step 3").Range("D10").Value=maValeur
    soit la valeur d'une autre cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("step 3").Range("D10").Value=Worksheets("step 1").Range("A2").Value
    etc., etc., etc;
    et idéalement pour éviter les problèmes on ajoute le nom du classeur.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2017
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    j'ai essayé avec ce code simple pour essai:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub STEP_33333333()
    If Worksheets("Opérateur1").Range("cw13") > 0 Then
        Worksheets("Opérateur1").Range("cw13").Value = Worksheets("Opérateur1").Range("cw13").Value + 1
    End If
    End Sub

    Mais j'obtiens sur la deuxième ligne l'erreur suivante: erreur d'exécution 9

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2017
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    ou alors avec ce code, j'obtiens la même erreur sur la ligne 30

    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
    'Je déclare les variables'
    Dim x As Integer
    Dim y As Integer
    Dim i As Integer
    Dim j As Integer
    Dim tableau() As Single
     
     
     
    'Taille du tableau'
    x = 1   'Nombre de ligne du tableau'
    y = 21  'Nombre de colonnes du tableau'
    ReDim Tableau_Simulation_3_Temps(1 To x, 1 To y)
     
     
    'Calcul des données'
    Range("ct13") = 0
    Range("cw13") = 3
    Range("cz13") = 1
    Range("dc13") = 0
    Range("df13") = 0
    Range("df9") = 0
     
    While Range("ct13") < 20
            If Range("dc13") < Range("cw21") Then
            Range("dc13") = Range("dc13") + 5
            Else
            For i = 1 To x
                For j = 1 To y
                tableau(i, j) = Range("cw21")
                tableau(i + 1, j) = Range("dk21")
                Range("df13") = Range("df13") + 1
                Range("ct13") = Range("ct13") + 1
                Range("dc13") = 0
                Next j
                Next i
                End If
                Wend

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2017
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    j'ai refait un code et toujours cette satanée erreur: erreur 9; l'indice n'appartient pas à la sélection
    erreur qui apparaît sur la ligne 43

    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
    Sub STEP_3_Opérateur1()
     
     
    'Je déclare les variables'
    Dim x As Integer
    Dim y As Integer
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim l As Integer
    Dim tableau() As Single
     
     
    'Taille du tableau1'
    x = 2   'Nombre de ligne du tableau'
    y = 20  'Nombre de colonnes du tableau'
    ReDim Tableau1(1 To x, 1 To y)
     
     
    'Taille du tableau2'
    x = 12  'Nombre de ligne du tableau'
    y = 20  'Nombre de colonnes du tableau'
    ReDim Tableau2(1 To x, 1 To y)
     
     
     
     
     
    'Calcul des données'
    Worksheets("Opérateur 1").Range("ct13") = 0
    Worksheets("Opérateur 1").Range("cw13") = 3
    Worksheets("Opérateur 1").Range("cz13") = 1
    Worksheets("Opérateur 1").Range("dc13") = 0
    Worksheets("Opérateur 1").Range("df13") = 0
    Worksheets("Opérateur 1").Range("df9") = 0
     
     
     
    While ((Worksheets("Opérateur 1").Range("ct13") < 20) Or (Worksheets("Opérateur 2").Range("df13")))
     
            If Worksheets("Opérateur 1").Range("dc13") > Worksheets("Opérateur 1").Range("cw21") Then
                For j = 1 To y
                Tableau1(i, j) = Worksheets("Opérateur 1").Range("cw21")
                Tableau1(i + 1, j) = Worksheets("Opérateur 1").Range("dk21")
                Worksheets("Opérateur 1").Range("df13") = Worksheets("Opérateur 1").Range("df13") + 1
                Worksheets("Opérateur 1").Range("ct13") = Worksheets("Opérateur 1").Range("ct13") + 1
                Worksheets("Opérateur 1").Range("dc13") = 0
                Next j
                End If
     
     
     
     
            If Worksheets("Opérateur 1").Range("df13") > Worksheets("Opérateur 2").Range("cw21") Then
     
                For l = 1 To y
                Tableau2(i, j) = Worksheets("Opérateur 2").Range("cw21")
                Tableau2(i + 1, j) = Worksheets("Opérateur 2").Range("dk21")
                Worksheets("Opérateur 2").Range("df13") = Worksheets("Opérateur 2").Range("df13") + 1
                Worksheets("Opérateur 2").Range("ct13") = Worksheets("Opérateur 2").Range("ct13") + 1
                Worksheets("Opérateur 2").Range("dc13") = 0
                Next l
                End If
     
     
     
     
                Worksheets("Opérateur 1").Range("dc13") = Worksheets("Opérateur 1").Range("dc13") + 5
         Wend
     
     
    'donnéesdans tableau'
    Worksheets("Résultats").Activate
     
     
    Range(Cells(4, 4), Cells(5, 23)) = Tableau1
    Range(Cells(10, 4), Cells(10, 23)) = Tableau2
     
     
     
     
    End Sub

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 755
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 755
    Points : 28 606
    Points
    28 606
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    D'abord ce serait bien de mettre tes codes entre les balises prévues à cet effet (le croisillon # qui se trouve à la fin de la deuxième ligne de l'éditeur)
    Une erreur est toujours accompagnée d'un texte plus explicite. Ainsi le texte qui s'affiche pour l'erreur 9 est l'indice n'appartient pas à la sélection.
    C'est à dire par exemple pour ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Worksheets("Opérateur1").Range("cw13") > 0 Then
    Le classeur actif au moment où tu lances ta procédure ne contient pas de feuille nommée Opérateur1.
    Il est important pour éviter tout problème de préciser de quel classeur il s'agit comme par exemple ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ThisWorkbook.Worksheets("Trame").Range("cw13").Value > 0 Then
    ou encore si le classeur qui contient la feuille nommée n'est pas le classeur où se trouve le code VBA et bien entendu à condition qe celui-ci soit ouvert
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Workbooks("monClasseur.xlsx").Worksheets("Trame").Range("cw13").Value > 0 Then
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2017
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Merci pour ta réponse.
    Je vais modifier mon code en conséquence.

    Pour les balises, je dois en mettre une au début et une à la fin?

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 755
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 755
    Points : 28 606
    Points
    28 606
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour les balises, je dois en mettre une au début et une à la fin?
    Quand tu cliques sur le croisillon, les balises de début et fin sont automatiquement placées
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/05/2012, 10h22
  2. Transférer des données d'une feuille à une autre du même classeur.
    Par jacko842 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/01/2009, 14h25
  3. Réponses: 27
    Dernier message: 14/12/2006, 19h49
  4. [VBA-E] Récupérer les données d'un capteur en USB
    Par $p00ky dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/05/2006, 15h29
  5. [VBA-E] afficher les données d'une datagrid dans des zones de textes
    Par fadwa dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/05/2006, 13h51

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