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 :

Pb sur macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Gestionnaire financier
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gestionnaire financier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut Pb sur macro
    Bonjour Messieurs - dames,
    J'ai un soucis avec le code ci-dessous, le débogage me dit qu'il y a un problème avec le Pastespecial/Range.
    Je souhaiterais envoyer plusieurs valeurs de cellules non contiguës d'un classeur ouvert à un classeur fermé et que ces valeurs des cellules soit classées sur la même ligne dans des cellules contiguës dans le classeur fermé.
    Si j'ai bien compris, on ne peux pas faire de sélection multiple, je pensais donc reproduire le code ci-dessous pour chaque cellule à envoyer.
    Je m'y prends peut-être hyper mal, n'hésitez pas à me corriger, voire à me flageller.
    Merci par avance et bonne soirée !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Envoi_DEP()
     
     
     ThisWorkbook.Sheets("NomFeuilleEntree").Range("J22").Select
     Selection.Copy
     Workbooks.Open(Filename:="adresseNomclasseursortie").Sheets("Nomfeuilleclasseursortie").Range("A2").End(xlUp).Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     Application.DisplayAlerts = False
     Workbooks.Open(Filename:="adressenomlasseursortie").Save
     Workbooks.Open(Filename:="adressenomlasseursortie").Close
     End Sub

  2. #2
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour, en ce qui me concerne, je verrais plutôt cela?
    mais il faut le tester?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Envoi_DEP() 
     ThisWorkbook.Sheets("NomFeuilleEntree").Range("J22").Copy
     Workbooks.Open(Filename:="adresseNomclasseursortie").Sheets("Nomfeuilleclasseursortie").Range("A100000").End(xlUp)(2).Selection.PasteSpecial Paste:=xlPasteValues
     Application.DisplayAlerts = False
     Workbooks.Open(Filename:="adressenomlasseursortie").Save
     Workbooks.Open(Filename:="adressenomlasseursortie").Close
     End Sub
    Cordialement

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Markal Voir le message
    Je souhaiterais envoyer plusieurs valeurs de cellules non contiguës d'un classeur ouvert à un classeur fermé et que ces valeurs des cellules soit classées sur la même ligne dans des cellules contiguës dans le classeur fermé.
    Première chose : ce que tu demandes n'est pas possible.
    Pour une raison élémentaire simple : on ne peut pas écrire dans un fichier fermé, que ce soit avec Excel ou un autre logiciel.

    Deuxième chose : je ne comprends pas pourquoi tu mets des "Open" à toutes les lignes.
    Une fois qu'un classeur est ouvert, il l'est. Pas besoin d'essayer de l'ouvrir dix fois.

    Donc :

    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
    Sub Envoi_DEP()
       Dim WSDest As Worksheet
       Dim WBDest As Workbook
       Dim WSSource As Worksheet
     
       Set WSSource = ThisWorkbook.Sheets("NomFeuilleEntree")
     
       Workbooks.Open(Filename:="adresseNomclasseursortie")
       Set WBDest = ActiveWorkbook
       Set WSDest = WBDest.Sheets("Nomfeuilleclasseursortie")
     
       WSSource.Range("J22").Copy
       WSDest.Range("A2").End(xlUp).PasteSpecial Paste:=xlPasteValues
     
       WBDest.Save
       WBDest.Close
    End Sub
    Répéter les lignes 12 et 13 pour chaque copie (adapté à la zone source et destination souhaitée).

    Autre détail : il est étonnant qu'il n'y ait pas de chemin dans ton nom de fichier pour l'ouvrir.

  4. #4
    Membre averti
    Homme Profil pro
    Gestionnaire financier
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gestionnaire financier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut
    Bonjour,
    Merci pour vos réponses et désolé pour ma réaction tardive.

    Transitoire : le VBA me dit "Propriété ou méthode non géré par cet objet".

    Menhir : la copy s'effectue sur le fichier de sortie, mais uniquement en A1 et chaque nouvelle copie écrase la précédente.

    Merci par avance pour vos remarques.

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Markal Voir le message
    Menhir : la copy s'effectue sur le fichier de sortie, mais uniquement en A1 et chaque nouvelle copie écrase la précédente.
    C'est pour ça que j'ai écris :
    Citation Envoyé par Menhir Voir le message
    Répéter les lignes 12 et 13 pour chaque copie (adapté à la zone source et destination souhaitée).
    Vu que dans ta demandes tu ne dis rien sur la façon d'ordonner les valeurs dans le fichier destination, on ne peut pas le deviner.

    Si tu ne montres pas ton code, impossible de dire ce que tu as fais de travers.

  6. #6
    Membre averti
    Homme Profil pro
    Gestionnaire financier
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gestionnaire financier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut
    Je me rends compte qu'effectivement ma demande n'était pas claire du tout, je vais reprendre.
    J'ai fais un modèle de bon de commande, je souhaiterais que plusieurs éléments de celui-ci se déverse dans un autre fichier de façon ordonnées.
    Par exemple : les cellules J22, B5, G56 soient déversées dans les cellules A2, B2 et C2 d'un autre classeur.
    Et que pour lr prochain bon de commande les cellules J22, B5 et G56 soient déversées dans les cellules A3, B3 et C3.

    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
     
    Sub Envoi_DEP()
       Dim WSDest As Worksheet
       Dim WBDest As Workbook
       Dim WSSource As Worksheet
     
       Set WSSource = ThisWorkbook.Sheets("BCF")
     
       Workbooks.Open ("C:\mes_documents\test_bdd_communes\DEP_test.xlsx")
     
       Set WBDest = ActiveWorkbook
       Set WSDest = WBDest.Sheets("bdd")
     
       WSSource.Range("J22").Copy
       WSDest.Range("A2").End(xlUp)(2).Selection.PasteSpecial Paste:=xlPasteValues
     Application.DisplayAlerts = False
       WBDest.Save
       WBDest.Close
    End Sub
    Merci par avance et encore désolé pour m'être mal exprimé.
    Bonne journée

Discussions similaires

  1. {VBA Excel}Probleme sur macro mauvaise lecture de feuille excel
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2007, 15h38
  2. Réponses: 8
    Dernier message: 27/07/2007, 17h06
  3. Aide sur Macro
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/07/2007, 22h28
  4. Problème sur macro (2 exécutions de code)
    Par Tsuna78 dans le forum Access
    Réponses: 2
    Dernier message: 19/03/2007, 20h24
  5. Probleme d'enregistrement sur Macro/VBA de Excel
    Par life is magic dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/11/2005, 17h23

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