Code VBA à valider

ThalieMTL Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
ThalieMTL Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je m'essaie à VBA suite à un besoin au travail.

J'ai un Excel qui est un relevé de compte. Dans un autre onglet, j'ai la liste des comptes pour lesquels je dois faire le relevé.
J'ai quelques problèmes:
- le process s'arrête après avoir exporté le 1er relevé en pdf
- le relevé exporté en pdf devrait porter le numéro de compte comme nom et il s'exporte avec le nom générique "2013 relevés"
- le process ne passe pas à la cellule suivante pour générer le relevé suivant (comment lui dire à quelle cellule aller se repositionner?)

Voilà, j'espère que c'est clair et que vous avez de la patience avec les débutantes ;-)

Merci infiniment...

Sub Macro2()
'
' Macro2 Macro
'

Sheets("Fonds dotés").Select
Range("A1").Select

Do While ActiveCell.Value <> Empty

Selection.Copy
Sheets("Relevé").Select
Range("F2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Dim filename As String
filename = Range("A1").Value
Sheets("Relevé").ExportAsFixedFormat xlTypePDF, "K:\Temporaire Valérie - NE PAS SUPPRIMER SVP\Comptabilité\Relevés de compte - ancienne méthode\2013 relevés" & Range("A1").Value & ".pdf"

Sheets("Fonds dotés").Select
Range("A1").Select

Selection.Offset(1, 0).Select

Loop

End Sub

2 réponses

  1. Yann
     
    Bonjour,
    En fin de code pourquoi reviens-tu en cellule A1.
    Comme avant de sortir de l'onglet tu devais être positionné sur la bonne cellule, quand tu y reviens tu fais simplement ton offset pour te positionner sur la celule suivante

    Yann
    0
    1. ThalieMTL Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonjour Yann,

      Quand j'enlève les lignes suivantes

      Sheets("Fonds dotés").Select
      Range("A1").Select

      La sélection descend d'une ligne mais à l'endroit ou on a collé la valeur, pas à l'endroit où il devrait copier la suivante pour reprendre la boucle...

      Le processus normal devrait être:
      Je copie une valeur dans l'onglet Fonds dotés
      Je la colle dans une cellule (toujours la même) de Relevé
      J'exporte l'onglet Relevé en pdf avec le nom = numéro copié dans la cellule de Fonds dotés
      Je reviens dans l'onglet Fonds doté et je copie la cellule suivante (en dessous) pour générer le nouveau relevé

      Il ne doit pas manquer grand chose à mon code n'est ce pas?

      Merci de votre aide!
      0
  2. ThalieMTL Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
     
    Mise à jour - vendredi 31 janvier

    J'ai essayé différentes choses avec plus ou moins de succés alors voilà où j'en suis.

    Récapitulatif des besoins:
    J'ai un Excel qui est un relevé de compte (onglet Relevé). Dans un autre onglet (Fonds dotés), j'ai la liste des comptes pour lesquels je dois faire le relevé.

    Le processus normal devrait être:
    Je copie la première valeur dans l'onglet Fonds dotés
    Je la colle dans une cellule (toujours la même, F2) de Relevé
    J'exporte l'onglet Relevé en pdf avec le nom = numéro copié et collé à l'étape précédente depuis la cellule de Fonds dotés
    Je reviens dans l'onglet Fonds dotés et je copie la cellule suivante (en dessous) pour générer le nouveau relevé.
    Je dois aussi imprimer physiquement le relevé ce que j'ai réussi en partie à faire dans la macro suivante mais sans la boucle qui ne marche jamais.
    J'ai donc créé un bouton de la macro Imprime ci-dessous prés de ma liste des Fonds et j'ai cliqué 237 fois dessus!! Ridicule ;-)

    Donc voici mes questions:
    - comment ajouter une boucle à la macro Imprime pour qu'elle imprime tout et s'arrête quand il n'y a plus de valeur dans la colonne de l'onglet Fonds dotés?
    - comment ajouter une commande d'enregistrement ou export en PDF (cela peut être une macro séparée de Imprime)? Il semble que quand j'essaie, il bloque au moment d'affecter le nom du fichier donc n'enregistre jamais ou uniquement le premier fichier)

    Sub Imprime()
    '
    ' Imprime Macro
    '
    ' Touche de raccourci du clavier: Ctrl+i
    '
    Selection.Copy
    Sheets("Relevé").Select
    ActiveSheet.Paste
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
    IgnorePrintAreas:=False
    Sheets("Fonds dotés").Select
    ActiveCell.Offset(1, 0).Range("A1").Select

    End Sub

    J'ai essayé cette Macro ImprimePDF mais l'enregistrement du nom de fichier ne marche pas et je ne suis pas sûre si on peut imbriquer une Sub dans une Sub ;-) Bref, pas brillante celle là mais peut être qu'elle peut être corrigée?

    Sub ImprimePDF()
    '
    ' ImprimePDF Macro
    '
    ' Touche de raccourci du clavier: Ctrl+m
    '
    Do Until IsEmpty(ActiveCell)
    Selection.Copy
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Relevé").Select
    ActiveSheet.Paste

    Sub FileNameAsCellContent()

    Dim FileName As String
    Dim Path As String

    Application.DisplayAlerts = False

    Path = "K:\Temporaire Valérie - NE PAS SUPPRIMER SVP\Comptabilité\Relevés de compte - ancienne méthode\2013 relevés" 'Change the directory path here where you want to save the file
    FileName = Range("A1").Value & ".pdf" 'Change extension here

    ActiveWorkbook.SaveAs Path & FileName, xlTypePDF 'Change the format here which matches with the extention above. Choose from the following link https://docs.microsoft.com/en-us/office/vba/api/Excel.XlFileFormat

    Application.DisplayAlerts = True

    ActiveWorkbook.Close

    End Sub

    Sheets("Fonds dotés").Select
    ActiveCell.Offset(1, 0).Range("A1").Select
    Loop

    End Sub

    Merci à ceux qui voudront bien me donner quelques tuyaux et bon WE à tous!

    Valérie
    0