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 :

Utiliser l'objet "Range" dans une variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Dataminer
    Inscrit en
    Juillet 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Dataminer

    Informations forums :
    Inscription : Juillet 2008
    Messages : 54
    Par défaut Utiliser l'objet "Range" dans une variable
    Bonjour,

    Je n'arrive pas à définir un Range (contenant déjà une variable) en tant que variable. J'ai une erreur 424 : objet requis.

    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
    Sub test()
     
    Dim u As Range
    Dim v As Range
     
    'indicateur ligne
    a = 2
     
    'condition de la boucle
    While Range("a" & a) <> ""
        'conditions des changements
        'changer la colonne dans les ranges
     
        Set u = UCase(Range("d" & a))
        Set v = Range("g" & a)
     
        If u Like ("*TOTO*") Then
        v = "TOTO"
        Else
        v = ""
        End If
     
     
        a = a + 1
    Wend
     
    End Sub
    Quelqu'un peut-il m'aider svp ?

  2. #2
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 173
    Billets dans le blog
    2
    Par défaut
    Bonjour lecter85,

    Set est à utiliser pour affecter un objet, pas pour affecter une valeur

    moi je mettrais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim u As String
    u = UCase(Range("d" & a))
       Set v = Range("g" & a)

  3. #3
    Membre confirmé
    Homme Profil pro
    Dataminer
    Inscrit en
    Juillet 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Dataminer

    Informations forums :
    Inscription : Juillet 2008
    Messages : 54
    Par défaut
    En faisant ça je n'ai plus d'erreur mais ma macro ne fait rien. Elle ne me trouve aucun mot que je cherche.

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    salut
    - Ucase s'applique à une chaîne et caractères, ce que n'est pas un objet range
    - tu n'as par ailleurs nul besoin de tout alourdir en passant par des objets range (u et v) pour lire une cellule et en modifier une autre.
    Agis directement sur les cellules concernées.
    - enfin, en lieu et place d'une boucle while affublée d'un compteur, utillise For Each
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for each cellule in range("A:A")
    ' ici ton code (si valeur de la cellule comme "*toto*"  else ...
    ' si valeur de celluler = "" then exit for
    Next
    dans tes instructions,utilise offset pour te référer à la cellule à modifier.
    Je te laisse faire un peu ...

    edit : pour ton Ucase, dont je devine l'utilisation :

    exemple pour une cellule c :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Ucase(c.value) like "*TOTO* ....

  5. #5
    Membre confirmé
    Homme Profil pro
    Dataminer
    Inscrit en
    Juillet 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Dataminer

    Informations forums :
    Inscription : Juillet 2008
    Messages : 54
    Par défaut
    Merci !

    Ça fonctionne parfaitement !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
     
    For Each cellule In Range("D:D")
     
        If UCase(cellule) Like ("*TOTO*") Then
        cellule.Offset(0, 3) = "TOTO"
        Else
        cellule.Offset(0, 3) = ""
        End If
     
    Next
     
    End Sub

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/12/2012, 08h18
  2. utiliser le resultat d'un SUM dans une variable
    Par Qapoka dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 16/05/2006, 15h47
  3. Utiliser la valeur d'un input dans une variable php
    Par megane dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/08/2005, 16h02

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