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 :

Déclaration de 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
    Lycéen
    Inscrit en
    Juin 2023
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2023
    Messages : 56
    Par défaut Déclaration de variable
    Bonjour cher réseau !
    Voici le problème que je rencontre pour déclarer une variable variable et ensuite utiliser la fonction ApplicationFonctio.Match

    Voici mon code
    a = ThisWorkbook.Sheets("BDA_N-1").Range(Range("A1"), ThisWorkbook.Sheets("BDA_N-1").Range("A1").End(xlToRight))
    x = ApplicationFonction.Match(result1, a, 0)

    Quelqu'un aurait-il une idée ?

    Merci d'avance .

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour, la fonction Match est une méthode de l’objet Application.WorksheetFunction, essaie donc Application.WorksheetFunction.Match

  3. #3
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2023
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2023
    Messages : 56
    Par défaut
    Citation Envoyé par Franc Voir le message
    Bonjour, la fonction Match est une méthode de l’objet Application.WorksheetFunction, essaie donc Application.WorksheetFunction.Match
    Bonjour Franc !
    Merci pour la proposition
    J'ai toujours une erreur avec ça et je pense que ça provient d'abord de ma variable "a"
    "a" c'est la plage A1->dernière cellule remplie de ma feuille
    Je n'arrive pas à corriger l'erreur

    Merci !

  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
    13 161
    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 161
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour assigner un objet à une variable après l'avoir déclarée comme objet (Workbook, Worksheet, Range, etc.), il faut utiliser l'instruction Set

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set maVariable = Range("A1:F1000")
    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
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2023
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2023
    Messages : 56
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Pour assigner un objet à une variable après l'avoir déclarée comme objet (Workbook, Worksheet, Range, etc.), il faut utiliser l'instruction Set

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set maVariable = Range("A1:F1000")
    Merci Phillipe mais justement je ne l'ai pas déclarée comme tel
    Je l'ai directement mis dans mon code
    et même après avoir essayé avec set ça ne marche toujours pas
    Merci quand même

  6. #6
    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 161
    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 161
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    même après avoir essayé avec set ça ne marche toujours pas
    Indiquer que ce ne "marche pas", n'est pas très précis.
    Je n'ai pas analyser votre première ligne mais peut-être n'est-ce pas un objet ou avez-vous une erreur de syntaxe ou autre problème.

    Petit exemple rapide ou de A2 à A16, j'ai placé des références R001 à R012 et le message me renvoie bien la position de la ligne où la valeur R006 se trouve.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub t()
      Dim rng As Range
      Dim fx As WorksheetFunction
      Set fx = Application.WorksheetFunction
      Set rng = ThisWorkbook.Worksheets("Feuil1").Range("A2:A13")
      MsgBox "Position = " & fx.Match("R006", rng, 0)
      Set rng = Nothing: Set fx = Nothing
    End Sub
    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

  7. #7
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2023
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2023
    Messages : 56
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,

    Indiquer que ce ne "marche pas", n'est pas très précis.
    Je n'ai pas analyser votre première ligne mais peut-être n'est-ce pas un objet ou avez-vous une erreur de syntaxe ou autre problème.

    Petit exemple rapide ou de A2 à A16, j'ai placé des références R001 à R012 et le message me renvoie bien la position de la ligne où la valeur R006 se trouve.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub t()
      Dim rng As Range
      Dim fx As WorksheetFunction
      Set fx = Application.WorksheetFunction
      Set rng = ThisWorkbook.Worksheets("Feuil1").Range("A2:A13")
      MsgBox "Position = " & fx.Match("R006", rng, 0)
      Set rng = Nothing: Set fx = Nothing
    End Sub
    Merci beaucoup Philippe !

    j'ai un message d'erreur "1004" qui affiche : impossible de lire la propriété Match de la classe WorksheetFunction


    J'ai mal expliqué plus haut mon problème mais heureusement que tu m'apporte la solution

    C'est ce que je cherche à faire mais à la place de la Range ("A2:A13") je voulais plutôt un truc du genre Range("A2").End(xlToRight) c'est à dire ce que fait Ctl + Shift + flèche droit

    Une écriture comme ça serait top si j'y arrivais.
    merci beaucoup quand même.
    Cdt

  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
    13 161
    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 161
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Lorsque je travaillais avec les plages classiques, je n'ai jamais utilisé la propriété End(xlDirection) de l'objet Range mais plutôt CurrentRegion bien plus simple à gérer. Il faut bien entendu pour cela avoir la première ligne et la première colonne remplies.
    Ensuite pour sélectionner une partie de la plage ainsi définie, j'utilise les propriétés Offset et Resize

    Depuis plusieurs années, je ne développe qu'avec des tableaux structurés bien plus simple à gérer aussi bien manuellement qu'avec le VBA

    Donc si vous avez une plage "classique" avec une ligne de titre et une colonne sans ligne ou colonne vide et qui commence en cellule A1, voici quelques exemples avec la plage des données en illustration

    La plage des données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Exemple_1()
     ' Sélection de la plage des données soit A2:J11
     Dim rng As Range
     Dim rngData As Range
     Set rng = ThisWorkbook.Worksheets("Data").Range("A1").CurrentRegion
     With rng
       Set rngData = .Offset(RowOffset:=1).Resize(RowSize:=.Rows.Count - 1)
     End With
     MsgBox "Adresse = " & rngData.Address(External:=True)
     Set rng = Nothing: Set rngData = Nothing
    End Sub
    La première colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Exemple_2()
     ' Sélection de la plage des données soit A2:A11
     Dim rng As Range
     Dim rngData As Range
     Set rng = ThisWorkbook.Worksheets("Data").Range("A1").CurrentRegion
     With rng
       Set rngData = .Offset(RowOffset:=1).Resize(RowSize:=.Rows.Count - 1, ColumnSize:=1)
     End With
     MsgBox "Adresse = " & rngData.Address(External:=True)
     Set rng = Nothing: Set rngData = Nothing
    End Sub
    La ligne de titre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Exemple_3()
     ' Sélection de la plage des données soit A1:J1 (ligne des titres
     Dim rng As Range
     Dim rngData As Range
     Set rng = ThisWorkbook.Worksheets("Data").Range("A1").CurrentRegion
     With rng
       Set rngData = .Resize(RowSize:=1)
     End With
     MsgBox "Adresse = " & rngData.Address(External:=True)
     Set rng = Nothing: Set rngData = Nothing
    End Sub
    Illustration
    Nom : 230622 dvp Range CurrentRegion.png
Affichages : 300
Taille : 27,1 Ko
    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. déclaration de variable public
    Par mathieu57 dans le forum MFC
    Réponses: 5
    Dernier message: 15/09/2005, 17h36
  2. [DB2] Ordre de déclaration des variables
    Par Fatah93 dans le forum DB2
    Réponses: 1
    Dernier message: 04/05/2005, 17h18
  3. déclaration de variables de 16, 32 et 128 bits
    Par samipate dans le forum C++
    Réponses: 10
    Dernier message: 30/12/2004, 22h33
  4. [FLASH MX2004] Déclaration de variables sous flash mx
    Par softyClochette dans le forum Flash
    Réponses: 4
    Dernier message: 29/11/2004, 16h11
  5. [debutant][Portée] Déclaration de variable .....
    Par Slein dans le forum Langage
    Réponses: 4
    Dernier message: 07/05/2004, 10h43

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