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 :

Script d'impression automatique bugge


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Janvier 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 65
    Par défaut Script d'impression automatique bugge
    Bonjour,
    Voici mon besoin:
    Afin de remplir automatiquement un formulaire à partir des données figurant dans une feuille A, en cliquant simplement sur le n° de ligne de cette feuille, la ligne est copiée dans la feuille B et, par calcul (=) les cellules sont remplies dans le formulaire (feuille C)

    Par exemple: la cellule F5 de la feuille A est recopiée par la macro en F5 de la feuille B et dans la feuille C (formulaire), c'est la case A4 qui est égale à F5 de la feuille B (formule: =FeuilleB!F5)

    Voici cette macro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_SelectionChange(ByVal Cible As Range)
     
      If (Cible.Rows.Count = 1) * (Cible.Columns.Count = Me.Columns.Count) Then
        With Feuil7
          Cible.EntireRow.Copy Destination:=.Cells(3, 1)
        End With
        Sheets("Feuille C").Select
      End If
    End Sub
    L'étape suivante est d'imprimer autant de formulaires que de lignes dans la feuille A (on pourrait le faire via le publipostage de Word par exemple, mais il faut rester dans le contexte Excel).

    Voici donc le principe que je voudrais produire par macro:

    Avec le même procédé que le remplissage automatique ci-dessus:
    - sélection de la première ligne de données,
    - impression de la feuille C
    - sélection de la ligne suivante
    - impression ...
    et ce jusqu'à ce que toutes les lignes de la feuille A non vides aient été balayées.

    J'ai écrit le script suivant, mais il bugge
    erreur de compilation, nombre d'arguments incorrect ou affectation de propriété incorrecte
    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
    Sub Impr_Totale()
        Dim Cible As Range
        Sheets("FeuilleA").Select
        i = 3
        While Sheets("FeuilleA").Cells(i, 1).Value <> ""
            Cible.Rows.Count = i
    '        Rows("1:" & i).Select
                With Feuil7
                  Cible.EntireRow.Copy Destination:=.Cells(3, 1)
    '              i.EntireRow.Copy Destination:=.Cells(3, 1)
                End With
            Sheets("FeuilleC").Select
            ActiveSheet.PrintOut Copies:=1
            i = i + 1
        Wend
    End Sub
    Pouvez-vous m'aider ? (en m'expliquant ce qui ne va pas, merci)

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Citation Envoyé par Guy_L Voir le message
    J'ai écrit le script suivant, mais il bugge (erreur de compilation, nombre d'arguments incorrect ou affectation de propriété incorrecte):

    Sur quelle ligne ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    La variable Cible n'a pas l'air d'être initialisée dans la procédure …

    Qui plus est la propriété Count est en lecture seule, donc non modifiable ‼

  4. #4
    Membre actif
    Inscrit en
    Janvier 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 65
    Par défaut
    Citation Envoyé par illight Voir le message
    Sur quelle ligne ?
    Cible.Rows.Count = i
    Citation Envoyé par Marc-L Voir le message

    La variable Cible n'a pas l'air d'être initialisée dans la procédure …
    dans la première macro non plus, pourtant elle fonctionne. est-ce nécessaire dans la deuxième ?
    Qui plus est la propriété Count est en lecture seule, donc non modifiable ‼
    ce qui confirmerait le bug sur la ligne indiquée, mais comment y remédier ?

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Citation Envoyé par Guy_L Voir le message
    dans la première macro non plus, pourtant elle fonctionne. est-ce nécessaire dans la deuxième ?
    Et non : elle est forcément initialisée dans la première macro car paramètre de la déclaration de l'évènement !


    Le second code n'ayant aucun rapport avec le premier, certainement pas le même développeur,
    il ne peut fonctionner sur aucune version d'Excel car tellement aware

    Donc il faut écrire littéralement ce qu'il est censé faire puis comparer avec le code lui-même …

  6. #6
    Membre actif
    Inscrit en
    Janvier 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 65
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    Et non : elle est forcément initialisée dans la première macro car paramètre de la déclaration de l'évènement
    en effet, tu as tout à fait raison, elle est déclarée par:
    "Private Sub Worksheet_SelectionChange(ByVal Cible As Range)"
    C'est pourquoi, j'avais mis dans ma seconde macro:
    "Dim Cible As Range"
    pensant que c'était ça la déclaration de variable
    Le second code n'ayant aucun rapport avec le premier, certainement pas le même développeur,
    il ne peut fonctionner sur aucune version d'Excel car tellement aware
    Donc il faut écrire littéralement ce qu'il est censé faire puis comparer avec le code lui-même …
    OK, donc je détaille (en commentaire)

    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
    Sub Impr_Totale()
        Dim Cible As Range	'déclaration de la variable Cible comme Range (ligne)    
    Sheets("FeuilleA").Select	'sélection de la feuille A (feuille avec les données de départ)   
     i = 3   'initialisation de la variable i à la valeur 3 (3ème ligne, les deux premières étant des titres)
        While Sheets("FeuilleA").Cells(i, 1).Value <> "" 'faire temps que la cellule Ai est différente de vide        
    Cible.Rows.Count = i	'la ligne sélectionnée est i
    '        Rows("1:" & i).Select
                With Feuil7	'La feuille 7 est la Feuille B de mon explication initiale, elle "reçoit" la copie de la ligne i
                  Cible.EntireRow.Copy Destination:=.Cells(3, 1) 'copie de la ligne i en feuille B (7) ligne 3
    '              i.EntireRow.Copy Destination:=.Cells(3, 1) 'essai en intégrant i dans la formule, mais ne fonctionne pas c'est pourquoi elle est affublée de la ' comme remarque
                End With
            Sheets("FeuilleC").Select	'sélection de la feuille C (formulaire final)
            ActiveSheet.PrintOut Copies:=1		'impression de la feuille sélectionnée
            i = i + 1	'incrément de i (de ligne)
        Wend
    End Sub
    il ne peut fonctionner sur aucune version d'Excel car tellement aware
    Aware ? Pourquoi ne peut-il pas fonctionner ?

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Ta traduction en gras ne veut pas dire que le code qui la précède correspond, loin de là ‼ Et ce dès le Dim

    Rien qu'en appuyant sur !

    Quand message d'erreur sur une ligne, soit la supprimer soit la mettre en commentaire …

    Sinon je vais être occupé pendant quelques heures …

Discussions similaires

  1. Script d'impression automatique
    Par talkk dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 06/09/2013, 03h46
  2. [OL-2003] Script d'impression automatique d'une pièce jointe infopath
    Par Romeoo dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 25/08/2009, 12h06
  3. [Javascript] Gerer impression automatique de document
    Par amarcil dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/02/2006, 15h08
  4. Impression automatique
    Par Poussy-Puce dans le forum ASP
    Réponses: 1
    Dernier message: 09/02/2006, 10h36
  5. Impression automatique involontaire d'un état
    Par Celia1303 dans le forum Access
    Réponses: 5
    Dernier message: 26/10/2005, 23h29

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