Rechercher : dans
Par :

VBA Excel - numéros à incrémenter et imprimer

Dernière réponse le 26 aoû 2007 à 22:45:02 Alex, le 8 mar 2007 à 10:31:02 
 Signaler ce message aux modérateurs

Bonjour,

je dois imprimer des étiquettes pour identifier des marchandises. Je travaille sous excel et j'essaie de faire une macro qui m'évite d'avoir à changer mes numéros d'étiquettes...

La page A4 est formée de 4 étiquettes que je numérote manuellement de 1 à 4, lors de la seconde impression je dois numéroter les mêmes cellules de 5 à 8, lors de la troisième impression je numérote de 9 à 12 ... etc... je pourrais continuer un moment le problème c'est que je dois marquer environ 10'000 articles.

Je cherche à écrire un macro qui augmente la valeur de mes 4 cellules après chaque impression.

Merci pour votre aide.
Alex

Configuration: Windows XP
Internet Explorer 6.0

1

rasta67, le 8 mar 2007 à 10:34:45
  • +1

Salut

a chaque impression il faut prendre la valeur de ta (ou tes) cases de la feuille : nom_feuille.cells(ligne,colonne) et d'augmenter leur valeur de 4 si je comprends bien...

Répondre à rasta67

2

Alex, le 8 mar 2007 à 10:37:33

Salut, oui c'est exactement celà.

Répondre à Alex

3

rasta67, le 8 mar 2007 à 10:41:52

Si je comprends tu peux faire un truc du style :

dim nb as integer

à la fonction d'impression ajouter :

nb = sheet(nom de la feuille).cells(ligne,collone).value
sheet(nom de la feuille).cells(ligne,collone).value = nb + 4

a faire pour chaque cellule que tu veux incrementer de 4

Répondre à rasta67

4

Alex, le 8 mar 2007 à 10:58:36

Oui c'est celà, mais je n'y arrive pas.

Lorsque je fais celà j'ai un message d'erreur qui dit
Compile error : Sub or Function not defined.

en plus je ne sais pas comment lui faire comprendre d'exécuter la commande après chaque impression.

merci
Alex

Répondre à Alex

5

rasta67, le 8 mar 2007 à 11:04:50

Il faut mettre le code dans une procedure (sub) dans un module par exemple qui sera lancée à l'événement d'impression...

sub Incremente()

'code qui incremente les valeurs'

end sub

ensuite dans l'événement d'impression, faire un call Incremente

Répondre à rasta67

6

rasta67, le 8 mar 2007 à 11:07:05

L'événement en l'ocurrence declenché avant impression est workbook_beforeprint()

Répondre à rasta67

7

Alex, le 8 mar 2007 à 11:18:46

Oui, c'est ce que j'ai fait mais j'ai toujours le message, mon code est le suivant

Sub Incremente()
' Macro recorded 3/8/2007 by alex
'code qui incremente les valeurs'
'
Dim nb As Integer
nb = Sheet("Sheet1").Cells("A1").Value
Sheet("Sheet1").Cells("A1").Value = nb + 4

End Sub

merci
Alex

Répondre à Alex

8

rasta67, le 8 mar 2007 à 11:21:24

Tu as mis cette fonction dans un module ??
tu l'appelles à quel moment ?
à quel moment a lieu ton message d'erreur ?

Répondre à rasta67

9

Alex, le 8 mar 2007 à 11:43:48

Oui elle apparait dans un module [Module1 (code)]

j'essaie de l'utiliser en appuyant sur le bouton play pour faire tourner la macro

le message d'erreur apparait de suite après
Sub Incremente() apparait en jaune avec une flèche sur la gauche
et le mot Sheet est en bleu.


merci
Alex

Répondre à Alex

10

rasta67, le 8 mar 2007 à 11:53:09

Comme c'est dans un module, avant le nom de ta sheet, tu dois indiquer le nom du workbook puisque tu en es sorti

dans la fonction Incremente de ton module il faut inserer:
nom_Worbook.sheet.cells(...)

Répondre à rasta67

11

Alex, le 8 mar 2007 à 14:07:57

Je suis vraiment mauvais... je n'y arrive pas ou alors je fais un truc faux...

Répondre à Alex

12

rasta67, le 8 mar 2007 à 14:16:26

Non ca doit etre un tout petit truc qui foire !! c'est toujours comme ca !!
tu connais la technique du CTRL + Espace ?
tu mets dans la proc sub

nom de ton workbook (premieres lettres + CTRL - Espace, tu as tout les objets listés, tu choisis le tien, après point , puis controle espace, ainsi de suite...)

Répondre à rasta67

13

Alex, le 8 mar 2007 à 14:37:12

Je sais mais je désespère ça doit être simple et je n'y arrive même pas...

après plein d'essais sans résultat j'arrive à:

Sub Incremente()
'
' Macro recorded 3/8/2007 by alex
'code qui incremente les valeurs'
'

Windows("InputTicket.xls").Activate
Sheets("Sheet1").Activate
Range("A1").Activate

Dim nb As Integer

nb = ActiveSheet.Cells ActiveCell.Value
ActiveSheet.Cells ActiveCell.Value = nb + 4

'

End Sub

Répondre à Alex

14

rasta67, le 8 mar 2007 à 14:43:01

à quel endroit il plante au debugage ??

Répondre à rasta67

15

Alex, le 9 mar 2007 à 14:12:58

J'ai trouvé après une nuit de recherches.. :-)

Sub Button1_Click()
' print Chart macro
' prints the chart and moves counter defined in A1 up by 4

Dim x As Integer
Dim STDprinter As String
STDprinter = Application.ActivePrinter

Range("A1").Select

x = ActiveCell
Sheets("Chart1").Select

ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:=STDprinter

'"\\chgnva999m\CHGNPE08P on Ne02:", Collate:=True

x = x + 4
Sheets("Sheet1").Select
ActiveCell = x

End Sub

Sub Macro2()
'
' Macro2 Macro
'

'
Sheets("Chart1").Select
End Sub

Répondre à Alex

16

rasta67, le 9 mar 2007 à 14:23:21

Super...

Répondre à rasta67

17

developp, le 5 avr 2007 à 16:14:50

Salut , je debute en vba et jai un souci aussi du meme genre

je dois sauvegarder des pesées(chiffres contenu ds 20 cellules C1 à C20) dans un fichier sous le bureau a chaque fois que la cellule c20 est pleine.je voudrais donc créer un bOucle qui me permet cela sans ecraser le fichier precedent ,en qq sorte qu il s enregistre sous un nom, pesée 1 ,pesée 2, pesée3 jusqua pesée x , si cela est possible la preference serait meme de mettre l heure de chaque enregistrement a la place de x puisque les valeurs défilent tt le temps


merci d avance merci de votre lecture

Répondre à developp

18

 alexis, le 26 aoû 2007 à 22:45:02

Ciao tt le monde

Bon c'est cool, la macro marche, mais j'aimerais imprimer 100 feuilles d'un coup et que ca s'incrémente automatiquement, est-ce possible?
Parce que pour l'instant il faut que j'appuie à chaque fois!!!

Si vous avez une solution, ca serait super

Merci d'avance

A+

Configuration: Windows XP
Internet Explorer 7.0

Répondre à alexis