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 :

Impossible d'affecter une valeur à une variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2009
    Messages : 38
    Par défaut Impossible d'affecter une valeur à une variable
    Bonjour,

    Je suis en train de me casser la tête sur une problématique qui me semble toute bête, mais impossible de trouver une solution.

    Ce que je souhaite :

    1) Stocker dans une variable X la valeur d'une colonne A de la feuille 1 ;
    2) Stocker dans une variable Y a valeur d'une colonne C de la feuille 2 ;
    3) Affecter dans la variable Y la valeur de la variable X.

    Ce que je fais :

    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
     
    Sub Alimentation_Liaison()
     
        ''''Création variable
        Dim Nbenreg As Long
     
        ''''Pour parcourir l'ensemble des lignes non vides
        Nbenreg = Worksheets("Fichier de travail").Range("A3").End(xlDown).Row
        For I = 3 To Nbenreg
     
            ''''Récupération de valeurs de colonnes
     
            Code = Sheets("Fichier de travail").Range("A" & I).Value
            Code_Projet_Client = Sheets("Projets Client").Range("C" & I).Value
     
            Code_Projet_Client = Code
     
        Next I
     
    End Sub
    Ce qui m'arrive :

    Erreur d'exécution 424 : Objet requis

    Pouvez-vous, s'il vous plaît, me débloquer là-dessus ?

  2. #2
    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
    1) tu voudras d'abord bien m'expliquer le sens de ces 3 lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Code = Sheets("Fichier de travail").Range("A" & I).Value
            Code_Projet_Client = Sheets("Projets Client").Range("C" & I).Value
     
            Code_Projet_Client = Code
    dont la 3ème écrase le résultat de la 2ème pour prendre celui de la 1ère !
    2) où et comment as-tu déclaré les variables Code et Code_Projet_Client (car si typées en objets, ma foi ...)

  3. #3
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2009
    Messages : 38
    Par défaut
    Alors :

    1) L'objectif est de créer des variables qui récupère des valeurs dans un onglet A, puis, selon des conditions non citées dans ce bout de code, de les affecter dans une cellule dans un onglet B.
    Je veux créer des variables pour stocker les valeurs de l'onglet A pour éviter d'avoir ce genre de choses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Projet Client").Range("C" & I).Value = Sheets("Fichier de travail").Range("A" & I).Value
    2) J'avais oublié de créer ces 2 variables. Je viens de le faire comme suit, mais cela ne fonctionne pas plus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Dim Code As String
        Dim Code_Projet_Client As String
    PS : je précise que je suis débutant en VBA. En programmation tout court d'ailleurs.

  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
    1) L'objectif est de créer des variables qui récupère des valeurs dans un onglet A, puis, selon des conditions non citées dans ce bout de code, de les affecter dans une cellule dans un onglet B
    Cela ne change absolument rien à la remarque que j'ai faite
    2) le message d'erreur reçu ne correspond alors à aucune des lignes de code que tu montres.

  5. #5
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2009
    Messages : 38
    Par défaut
    Bon, passons sur l'erreur reçue.

    Ma question est : comment faire ce que je souhaite, à savoir :

    1) Stocker dans une variable X la valeur de la ligne I d'une colonne A de la feuille 1 ;
    2) Affecter la valeur de la variable X dans la ligne I d'une colonne C de la feuille 2 ?

  6. #6
    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
    Questions inquiétantes
    on affecte la valeur d'une variable V à la cellule R5 d'une feuille "FEUILLE" ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("FEUILLE").Range("R5").value = V
    si l'on veut remplacer 5 par la valeur (un numérique) d'une variable k --->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("FEUILLE").Range("R" & k).value = V
    et c'est ce que tu as d'ailleurs écrit.

    Ton erreur est donc ailleurs (en plus de mon observation sur un écrasement, qui n'explique aucunement l'erreur et est autre chose).

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    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 : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pourquoi n'utilise-tu pas simplement une variable objet de type Range ?
    Exemple écrit de mémoire donc non testé

    Code à placer en tête de procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ' Déclaration des variables
     Dim shtSource As Worksheet
     Dim shtTarget As Worksheet
     Dim rngSource As Range
     Dim rngTarget As Range
     ' Attribution de la référence d'objet
     With ThisWorkbook
      Set shtTarget = .Sheets("Projet Client")
      Set shtSource = .Sheets("Fichier de travail")
     End With
    Code de la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     For i = 3 To Nbenreg
      Set rngSource = shtSource.Range("A" & i)
      Set rngTarget = shtTarget.Range("C" & i)
      rngTarget.Value = rngSource.Value
     Next
    [EDIT]
    Attention erreur de nommage en ligne (j'ai mis en rouge la correction)
    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

  8. #8
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2009
    Messages : 38
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Pourquoi n'utilise-tu pas simplement une variable objet de type Range ?
    Exemple écrit de mémoire donc non testé

    Code à placer en tête de procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ' Déclaration des variables
     Dim shtSource As Worksheet
     Dim shtTarget As Worksheet
     Dim rngSource As Range
     Dim rngTarget As Range
     ' Attribution de la référence d'objet
     With ThisWorkbook
      Set shtTarget = .Sheets("Projet Client")
      Set rngSource = .Sheets("Fichier de travail")
     End With
    Code de la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     For i = 3 To Nbenreg
      Set rngSource = shtSource.Range("A" & i)
      Set rngTarget = shtTarget.Range("C" & i)
      rngTarget.Value = rngSource.Value
     Next
    Bonjour !

    Merci beaucoup pour cette réponse qui me permet de me débloquer, c'est parfait !

    Bonne continuation !

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

Discussions similaires

  1. Affecter une valeur à une variable avec requête SQL
    Par xeron33 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 26/02/2013, 00h57
  2. affecter une valeur à une variable
    Par rutabagas dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 08/02/2011, 09h49
  3. Réponses: 2
    Dernier message: 06/09/2010, 16h05
  4. Réponses: 3
    Dernier message: 14/05/2009, 17h53
  5. affecter une valeur à une Variable public
    Par mnssylvain dans le forum VBA Access
    Réponses: 10
    Dernier message: 28/01/2007, 12h39

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