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 :

différence entre deux écritures de plage de cellules [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    responsable QSE
    Inscrit en
    Mars 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : responsable QSE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2018
    Messages : 14
    Par défaut différence entre deux écritures de plage de cellules
    Bonsoir à tous,

    Est-ce que quelqu'un peut m'expliquer la différence entre les deux écritures suivantes (à part bien sûr le numéro de la ligne) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set maPlage1 = ThisWorkbook.Sheets("Etudiant").Range(Cells(nbligne + 3, 3), Cells(nbligne + 3, nbcolonne))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set maPlage1 = Range(ThisWorkbook.Sheets("Etudiant").Cells(nbligne + 7, 3), ThisWorkbook.Sheets("Etudiant").Cells(nbligne + 7, nbcolonne))
    Je constate que l'écriture 1 ne marche pas toujours. J'ai eu parfois avec cette écriture le message suivant "La méthode 'Cells' de l'objet _Global a échoué". Donc qu'est-ce qui peut faire qu'a certains endroits du code, elle marche et à d'autres elle ne marche pas?

    merci d'avance

  2. #2
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut re
    Hello,

    Sans certitude vu que je suis en apprentissage vba
    Tu pourrais peut-être modifier ta première ligne par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set maPlage1  = Range(ThisWorkbook.Sheets("Etudiant").Cells(nbligne + 3, 3),ThisWorkbook.Sheets("Etudiant"). Cells(nbligne + 3, nbcolonne))
    Bat

  3. #3
    Membre averti
    Femme Profil pro
    responsable QSE
    Inscrit en
    Mars 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : responsable QSE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2018
    Messages : 14
    Par défaut
    Citation Envoyé par mfoxy Voir le message
    Hello,

    Sans certitude vu que je suis en apprentissage vba
    Tu pourrais peut-être modifier ta première ligne par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set maPlage1  = Range(ThisWorkbook.Sheets("Etudiant").Cells(nbligne + 3, 3),ThisWorkbook.Sheets("Etudiant"). Cells(nbligne + 3, nbcolonne))
    Bat
    Tu me proposes d'écrire la première ligne suivant la même syntaxe que la deuxième. Or le fond de ma question est "en quoi la différence de syntaxe entre ces deux lignes de code induit une différence lors de l'exécution?"

    J'apprends vba sur le tas et il y a des tonnes du trucs qui m'échappent

  4. #4
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut re
    Je suis désolé , j ai cru que tu ne voyais pas les incohérences entre ton code erroné et celui qui fonctionne.
    Selon moi qui suis aussi loin d'être un pro.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set maPlage1 = ThisWorkbook.Sheets("Etudiant").Range(Cells(nbligne + 3, 3), Cells(nbligne + 3, nbcolonne))
    Dans ta ligne , nok, je constate que :
    1) tu ne "dit" pas que ta variable est un Range Range(...
    2) le passage ...").Range(Cells(... : pour moi il ne doit pas avoir un .Range mais un .Cells
    3) dans la partie ...,Cells(nbligne..., tu n indiques pas sur quelle feuille du classeur chercher ta dernière cellule

    Maintenant encore une fois je suis loin d'être une pro , et certainement aussi novice que toi.
    Mais voici mon hypothèse de ton plantage de code et la ligne corriger dans mon précédent post

    Bat

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    Dit autrement, avec ThisWorkbook.Sheets("Etudiant").Range(...) tu t'adresses à la feuille Etudiant
    A l'intérieur tu mets Cells(nbligne + 3, 3), Cells(nbligne + 3, nbcolonne) qui s'adressent à la feuille active.
    Si ce ne sont pas les mêmes, ça plante...

    Tu peux aussi écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    with ThisWorkbook.Sheets("Etudiant")
        Set maPlage1 = Range(.Cells(nbligne + 3, 3), .Cells(nbligne + 3, nbcolonne))
    End With
    Le . devant .Cells dit à vba d'utiliser l'objet défini dans le with
    Ce qui revient à ta 2nde syntaxe en plus léger et lisible.
    eric

  6. #6
    Membre averti
    Femme Profil pro
    responsable QSE
    Inscrit en
    Mars 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : responsable QSE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2018
    Messages : 14
    Par défaut
    merci à vous deux mfoxy et eriiic! J'ai compris!

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

Discussions similaires

  1. [XL-2016] Différence entre deux écritures faisant à priori la même chose
    Par Fleurey21 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 02/05/2018, 08h54
  2. Réponses: 0
    Dernier message: 13/10/2010, 16h24
  3. Différence entre deux dates
    Par pittzz dans le forum Oracle
    Réponses: 5
    Dernier message: 18/07/2005, 12h24
  4. Comment obtenir la différence entre deux dates ?
    Par jbat dans le forum Langage
    Réponses: 4
    Dernier message: 02/06/2005, 09h34
  5. Résultats erroné différence entre deux types TDateTime
    Par Alghero dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/03/2004, 17h03

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