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 :

problème avec range [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut problème avec range
    Bonjour,
    j'essaie d'avoir un code rationnel et court via l'utilisation d'une variable de type range, mais cela ne marche pas.

    Quelqu'un peut-il m'expliquer mon erreur et me dire comment faire.
    Merci (C'est urgentissime.........!!!)

    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
        '....
        Dim ADG_Sheet     As String
        Dim lrowto      As Long
        Dim Target_rg   As Range
    
        '...
    
        With Sheets(Data_sheet)
           lrowto = 6 'start ligne for data storing (to sheet)
           '...
            Target_rg = Sheets(ADG_Sheet).Range("J" & lrowto)
            Select Case .Range("Y" & lrowfr)
                Case "EP"
                    Target_rg = "Primarschule"
        '...
    ca crame sur la ligne en Bold avec "Object Variable ou with block variable not set".

    J'ai bien sûr vérifié mes variables qui sont initalisées correctement car elles fonctionnesntpour le reste du code.

    j'avais essayé avec un With inbriqué, défini dans le select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (With Sheets(ADG_Sheet).Range("J" & lrowto))
    , mais c'est refusé par le compilateur, d'où ma démarche avec le range, mais

    Merci d'avance.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Salut !

    En reprenant ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
     
        Dim lrowto As Long
     
        lrowto = 6
     
        Target_rg = Sheets(Feuil1).Range("J" & lrowto)
     
        MsgBox Target_rg
     
    End Sub
    j'obtiens une erreur avec incompatibilité de type.

    Par contre, si je remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Target_rg = Sheets(Feuil1).Range("J" & lrowto)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Target_rg = Sheets("Feuil1").Range("J" & lrowto)
    je n'ai plus aucun problème. Tu testes pour moi ?

  3. #3
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Salut,


    je ne peux pas faire cela.

    Target_Rg est une variable passée en paramètre à mon code Excel qui est appelé par Access (je te passe les détails, mais pour faire court j'exporte un table Access vers excel et puis je la manipule pour formatter mes données comme souhaitées par le client).

    L'instruction suivante fonctionne parfaitement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            Sheets(ADG_Sheet).Range("H" & lrowto) = Age
    Par contre, la variable contient des espaces.
    Voici sa valeur, "Tabelle Teilnehmer-Ausbildungen"

    cela pourrait expliquer que la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Target_rg = Sheets(ADG_Sheet).Range("J" & lrowto)
    plante, mais pas les autres du type de celle qui fonctionne en haut ?

    Merci pour ta réponse méga rapide.

  4. #4
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour Godzestla, le forum,

    N'aurais tu pas oublié SET ?

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    un peu tirer par les cheveux mais ça m'a l'air de fonctionner...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ADG_Sheet.select
        Target_rg = ActiveSheet.Range("J" & lrowto)
    A+
    Edit : Tient pas compte, j'ai confondu entre ta plage et ta feuille !!!
    Edite 2 : et en plus je pense que Aalex a raison.

  6. #6
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Génial aalex_38, c'est le SET.

    Je n'y aurais jamais pensé car je connais pas trop bien son usage et pensais qu'il n'était de mise que pour assigner quelquechose à une variable de type Object.

    J'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Target_rg = Sheets(ADG_Sheet).Range("J" & lrowto)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET Target_rg = Sheets(ADG_Sheet).Range("J" & lrowto)
    Encore merci.

    Si d'aventure tu sais m'expliquer pourquoi il faut le SET, cela me permettra de comprendre et de ne pas refaire la même erreur.


    Merci à tous pour votre aide super rapide. J'apprécie énormément.

  7. #7
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Content t'avoir pu t'aider.

    Pour l'explication, en réalité je ne sais pas vraiment, je sais seulement que l'on doit faire comme ça .

    Si quelqu'un a une explication...

  8. #8
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Merci quand même.

    je laisse le post ouvert encore un moment dans l'espoir d'avoir l'explication sur l'usage du SET.

    Puis je cloturerai.

    Excellente journée à toi.

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Effectivement, le SET sert pour les objets.

    Et un Range EST un objet puisqu'il possède des propriétés et qu'on peut lui appliquer des méthodes.

    Citation Envoyé par l'aide en ligne
    Range, propriété

    Renvoie un objet Range qui représente une cellule ou une plage de cellules.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  10. #10
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour AlainTech,

    merci pour l'explication. j'ai assimilé.

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

Discussions similaires

  1. [VBA - Excel - Word] Problème avec Range(Cells(1,1),Cells(10,10))
    Par Tanoffy dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/10/2014, 11h07
  2. Petit problème avec Range et Cells
    Par fdegrave dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/03/2013, 18h08
  3. Problème avec Range.AdvancedFilter, méthode
    Par Sogestion dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/11/2012, 16h57
  4. [XL-2003] Problème avec Range
    Par andy38 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/06/2009, 23h10
  5. Problème avec Range.Formula
    Par zerti dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/07/2007, 17h25

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