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 :

mise en forme entre classeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 22
    Par défaut mise en forme entre classeur
    bonjour,
    j'essaye de mettre en forme un classeur excel dont certaines cellules se rempliraient automatiquement (par un bouton à cliquer) en recopiant des valeurs contenues dans un autre fichier excel.
    J'ai réussi à écrire le code suivant mais il ne marche pas et je n'arrive pas à voir d'où vient l'erreur.
    Par ailleurs je ne trouve pas d'éléments de réponses concernant les emplacements relatifs et absolus dans l'écriture des chemins des dossiers.
    Merci de toute aide
    Voici le fameux code

    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
    Private Sub CommandButton1_Click()
     
       'entrée d'un paramètre qui va permettre de retrouver la ligne à recopier dans un classeur nommé "Etude1"
    idetude = Application.InputBox(prompt:="Entrer l'Identifiant de votre étude", Type:=1)
     
        'Ouvrir le classeur nommé Base CHU promoteur
        Workbooks.Open ("S:\Recherches_cliniques\DRCI\BDD\Base CHU promoteur.xls")
     
        'Activer le classeur Base CHU promoteur et copier une cellule
        Workbooks("Base CHU promoteur.xls").Activate
        Worksheets("REGLEMENTAIRE.xls").Activate
        'retrouve le numéro de la ligne qui correspond à la variable entrée précédemment et le mémorise en tant que nombre
        nbr = Range("A1:A65536").Find(idetude, lookat:=xlWhole).Row
         'affichage pour vérifier qu'il a bien pris la bonne ligne =test   
         MsgBox "Numéro de la ligne :" & nbr
        Sheets("REGLEMENTAIRE").Cells(nbr, 2).Select
        'copie le numero de dossier associe à l'identifiant rentré
        Selection.Copy
        'Activer le classeur Etude1 et coller la valeur au bon endroit
        Workbooks("Etude1.xls").Activate
        Sheets("SUIVI").Cells(1, 1).Select
        ActiveSheet.Paste
     
     
    End Sub

  2. #2
    Membre éclairé Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Par défaut
    Bonjour,

    Où le code bloque-t-il?

    Quelle est l'erreur?

    Qu'entends-tu par :
    Par ailleurs je ne trouve pas d'éléments de réponses concernant les emplacements relatifs et absolus dans l'écriture des chemins des dossiers.
    Où veux-tu coller tes infos?

    A+

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour,
    Déjà les activate et le Select ne sont pas nécessaires. Toutes tes activate et Select ne sont pas nécessaires.
    ensuite, je m'étonne que ta feuille existe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("REGLEMENTAIRE.xls").Activate
    et avec ça, tu risques bien d'avoir du blocage au cas ou idetude n'existe pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     nbr = Range("A1:A65536").Find(idetude, lookat:=xlWhole).Row
    Le comble, c'est pour copier ta cellule "trouvée" dans "A1" de la feuille suivi du Classeur Etude1

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 22
    Par défaut
    merci pour ces premières réponses, je vais mieux détaillé mes questions.
    Tout d'abord je souhaite coller plusieurs cellules d'une ligne (définie grâce à un identifiant puis à un numéro de ligne) d'une feuille 1 d'un classeur "Etude" vers une feuille "REGLEMENTAIRE" d'un classeur "BASE CHU PROMOTEUR" à plusieurs endroits différents mais dont je rentrerai les coordonnées à la main (A1 en est un exemple).
    Je pensais donc qu'il fallait activer et sélectionner les emplacements en fonction des actions. Si ça n'est pas le cas faut-il tout de même que les deux classeurs soient déjà ouverts auparavant?
    Le code bloque effectivement sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("REGLEMENTAIRE.xls").Activate
    Quelle est l'erreur, ça n'est pas la bonne formulation pour ouvrir la feuille "REGLEMENTAIRE"?
    L'erreur signalée est: Erreur d'exécution 9 L'indice n'appartient pas à la sélection.
    Quel est le risque encouru si idetude n'existe pas?
    Enfin, l'histoire des chemins relatifs et absolus c'est pour ne pas avoir à entrer les chemins complets de l'emplacement du dossier mais juste une autre formulation si les deux classeurs se trouvent dans le même fichier. J'ai entendu parler de ça mais je ne sais pas comment cela s'écrit.

  5. #5
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Worksheets=onglets
    workbooks=classeur (fichier excel)
    Est ce que tu as un onglet qui s'apelle "REGLEMENTAIRE.xls"
    Si ton onglet s'apelle REGLEMENTAIRE alors met juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("REGLEMENTAIRE").activate
    Si tu parle d'un classeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    workbooks("REGLEMENTAIRE").activate
    Mais comme le dit mercatog les activate et les select c'est pas top mais là tu t'en rendra compte bien assez tot quand tu verra les alternative, n'allont pas plus vite que la musique

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 22
    Par défaut
    j'ai effectué les modifications (enlevé les .xls) mais j'ai toujours la même erreur!
    Je suis d'accord avec vous pour enlever les .activate .select mais que mettre à la place alors?

  7. #7
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Réécrit ta nouvelle version du code. comme ça, sera clair

    En réponse: si idetude n'est pas trouvé! de quel ligne parle cette ligne de code?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbr = Range("A1:A65536").Find(idetude, lookat:=xlWhole).Row

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/02/2015, 17h14
  2. [XL-2007] Mise à jour liaisons entre classeurs
    Par XceSs dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/11/2011, 20h53
  3. Réponses: 3
    Dernier message: 13/03/2008, 16h10
  4. [VBA-Excel] Mise en forme d'un classeur
    Par snooopy007 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/07/2006, 18h37
  5. comment effectuer des mises à jour entre classeurs excel ?
    Par benjamin.garbolino dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/03/2006, 00h51

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