Code VBA à valider

Fermé
ThalieMTL Messages postés 3 Date d'inscription jeudi 30 janvier 2014 Statut Membre Dernière intervention 31 janvier 2014 - 30 janv. 2014 à 01:46
ThalieMTL Messages postés 3 Date d'inscription jeudi 30 janvier 2014 Statut Membre Dernière intervention 31 janvier 2014 - 31 janv. 2014 à 23:55
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
A voir également:

2 réponses

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
ThalieMTL Messages postés 3 Date d'inscription jeudi 30 janvier 2014 Statut Membre Dernière intervention 31 janvier 2014
30 janv. 2014 à 21:05
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
ThalieMTL Messages postés 3 Date d'inscription jeudi 30 janvier 2014 Statut Membre Dernière intervention 31 janvier 2014
31 janv. 2014 à 23:55
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