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 de syntaxe ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 61
    Par défaut Problème de syntaxe ?
    Bonjour à tous !

    Est-ce que l'un d'entre vous pourrait ma dire ce qui ne va pas dans le code suivant...
    C'est manifestement une erreur de syntaxe, j'ai essayé tout ce que j'ai pu pour y remedier, mais là, je n'ai plus d'idée...

    Merci d'avance
    Alfred

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Resume = Range("Feuil1!B1", "Feuil2!B1")

  2. #2
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour,

    alors deux choses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Resume = Range("Feuil1!B1", "Feuil2!B1")
    1. mets plutot ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Resume = sheets("Feuil1").Range("B1")
    2. une sélection sur deux feuilles en même temps, ça te parait possible à toi?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 51
    Par défaut
    Bonjour,

    C'est sur que comme ça, ça ne peut pas marcher...

    Déjà, ne pas utiliser Resume qui est un terme réservé à VBA.

    Ensuite, peut être !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set almpg = Union(Sheets("Feuil1").Range("B1"), Sheets("Feuil2").Range("B1"))
    Cordialement

    Edit : mais comme le dit Mayekeul : je ne pense pas que ça marche sur 2 feuilles différentes...

  4. #4
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    Déjà, ne pas utiliser Resume qui est un terme réservé à VBA.
    en plus! j'avais pas fait gaffe!

    sinon, je ne pense pas qu'union te permettra de définir un range sur plusieurs feuilles

  5. #5
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 61
    Par défaut
    Euh... Non, ça ne marche pas...
    Et désolée si ma question était bête : je débute !

    Je veux juste récupérer les données d'un formulaire dans une plusieurs cellules de plusieurs feuilles... Je ne savais pas que ça n'était pas possible...

    comme ça marche bien sur une cellule, je vais essayer de faire une copie de son contenu dans l'autre feuille.

    Merci pour votre aide

  6. #6
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    il n'y a pas de question bete!

    mais tu peux exposer ton probleme en détails, si tu as des soucis de résolution, nous serons ravis de t'aider!

  7. #7
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 61
    Par défaut
    Merci !

    Une petite question : comment utilise t on "copy" ?

    Est-ce qu'on peut s'en servir pour copier une cellule d'une feuille à l'autre ?

  8. #8
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    en vba pour sélectionner une plage dans une feuille, il faut impérativement que la feuille soit la feuille active... sinon Boum !

    Alfred23, repenses à ta question et reposes là dans un nouveau fil qui correspondra au pb exact du genre "récupérez des valeurs sur plusieurs feuilles pour un formulaire" (à adapter pour que ça colle au mieux à ton besoin) et que tu explicites bien dans le message ensuite.

    cordialement,

    Didier

  9. #9
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 61
    Par défaut
    d'accord. Merci.

  10. #10
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    re

    Pour copy, vois l'enregistreur de macro, l'aide et ici :
    ftp://ftp2.developpez.be/developps/vb/VB-excel2.pdf
    page 17 ... et tout le reste, c'est Excel-lent

    bon courage,

    Didier

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut à tous
    Citation Envoyé par Ormonth Voir le message
    Bonjour,

    en vba pour sélectionner une plage dans une feuille, il faut impérativement que la feuille soit la feuille active... sinon Boum !
    Petite erreur
    essaies
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
    Sheets("Feuil1").[A1:B8].Copy Sheets("Feuil2").[D5]
    End Sub
    Copiera la plage de A1 à B8 de la feuille "Feuil1" dans la feuille "Feuil2", à partir de la cellule D5, même si c'est une troisième feuille qui est active.

    Alfred23 si tu expliquais simplement le but à atteindre ? Il y a toujours, sur Excel des tas de chemins pour y parvenir, à condition de savoir où!
    Pour faire référence à une cellule de la page active, il y a au moins 4 méthode en adressage absolu :
    Range("B5"), Cells(5,"B"), Cells(5,2), [B5]
    On utilise une plutôt que l'autre, par habitude, l'aide du menu déroulant que VBE propose, la facilité de lecture, l'encombrement, etc...
    Donc, chacun a ses raisons de mettre un code particulier, et si tu ne définis pas ce que tu veux obtenir en final, on va travailler sur ton codage, alors qu'une autre syntaxe serait plus adaptée.

    Si tu donnes le but recherché et le code que tu penses utiliser, on pourra le corriger, ou l'améliorer, ou te proposer une autre solution
    A+

  12. #12
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    re-bonjour

    Gorfael, avant d'utiliser un style péremptoire...
    Salut à tous
    Citation:
    Envoyé par Ormonth
    Bonjour,

    en vba pour sélectionner une plage dans une feuille, il faut impérativement que la feuille soit la feuille active... sinon Boum !

    Petite erreur
    essaies
    Code :
    Sub test()
    Sheets("Feuil1").[A1:B8].Copy Sheets("Feuil2").[D5]
    End SubCopiera la plage de A1 à B8 de la feuille "Feuil1" dans la feuille "Feuil2", à partir de la cellule D5, même si c'est une troisième feuille qui est active.
    Analyse ce que tu cites et écris ...Mon propos repris in extenso dans ta citation parles bien de Sélection qui ne peut-être opérée que dans la feuille active
    Hors le code que tu mets en avant n'opère pas de sélection et utilise l'argument de la méthode Copy ce qui reviens comme si bien explicité dans le lien fourni dans mon post précédent à :
    Copy
    Cette méthode utilise ou non l'argument Destination. Lorsque l'argument est omis, la méthode copie la plage dans le presse-papiers, sinon le collage à lieu dans le même temps. Sauf cas très particulier il faut toujours préciser l'argument Destination. Cet argument doit être soit un objet Range de la même dimension que la plage source, soit une cellule unique qui deviendra le coin supérieur gauche de la plage collée. Pour donner un
    exemple, le code généré par l'enregistrement automatique serait :
    Range("A1 :E5") .Select Selection.Copy Sheets("Feuil2").Select Range("C3").Select ActiveSheet.Paste
    Ce qui revient à écrire :
    Range("A1:E5") .Copy Destination :=Worksheets("Feuil2") .Range("C3")
    Dernière instruction qui peut être encore condensée comme tu l'as faite pour la plus grande clarté / débutants.

    de même si tu veux mettre dans la feuille 3 (active par défaut) le résultat de la concaténation d'une cellule de la feuille 1 et une de la 2, en vba tu auras par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=Feuil1!R[-8]C[1]&Feuil2!R[-11]C"
    alors que si tu passes par le moteur de macro pour ce résultat, tu passes bien par des sélections "physiques" à la souris..

    Bon en reprenant les bases pour être plus clair:

    si sur ton classeur de 3 feuilles tu te mets en feuil1 et que tu lances :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub vv()
    Sheets("feuil1").Range("C19").Select
    End Sub
    = OK

    si tu te mets en Feuil3 et que tu lances la même chose :

    BOUM !!

    si tu te mets en Feuil3 et que tu lances :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub vv2()
    Sheets("feuil1").Select
    Range("C19").Select
    End Sub
    = OK, encore que... il aurait été plus correct d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub vv2()
    Sheets("feuil1").Select
    Range("C19").Activate
    End Sub
    mais bon...

    donc on n 'est pas ici pour polémiquer (même si Bricofire avait déjà eu ces mésaventures...), mais pour ne pas induire en erreur


    rajout : Arf, la hazard faisant bien les choses, voir démo plus explicite en fin de ce post
    http://www.developpez.net/forums/sho...00#post3403200

    Bonne journée et sincères compliments pour le volume de tes interventions

    Didier

Discussions similaires

  1. Problème de syntaxe - elements['x'].value
    Par Equus dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/02/2005, 11h22
  2. [Interbase] Problème de syntaxe SQL
    Par navis84 dans le forum InterBase
    Réponses: 4
    Dernier message: 22/12/2004, 17h07
  3. Problème de syntaxe
    Par Mister_FX dans le forum ASP
    Réponses: 5
    Dernier message: 30/06/2004, 10h01
  4. Problème de syntaxe ADO ...
    Par bendev dans le forum ASP
    Réponses: 2
    Dernier message: 15/04/2004, 14h38
  5. Réponses: 2
    Dernier message: 08/03/2004, 15h10

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