Incrémenter une cellule

familitom

XLDnaute Nouveau
Bonjour,
Je découvre "Visual basic" avec Excel 2007.

Je souhaite faire incrémenter la valeur d'une cellule que j'ai nommée "Incrément" de +1 après chaque enregistrement ou à chaque ouverture de mon fichier.

J'arrive à inscrire le nom de ma cellule "Bord_0001" que je souhaite faire évoluer à "Bord_0002", "Bord_0003" etc via la commande suivante:

Sub Incrémentation()
'
'Macro le 23/03/2010 par Toto
'
'
vPlageNom = Range("incrément").End(xlDown).Row
ActiveWorkbook.Names.Add Name:="Bord_0001", RefersToR1C1:=vPlageNom

End Sub


mais je n'arrive pas à l'incrémenter automatiquement après l'enregistrement ou à l'ouverture.

S'il vous faut plus de renseignements n'hésités pas à me le faire savoir.

Merci d'avance pour votre aide
 

JNP

XLDnaute Barbatruc
Re : Incrémenter une cellule

Bonjour Familitom et bienvenue :),
Je ne suis pas trop ta macro (qui ne sert à rien à priori). La procédure correcte serait
Code:
Sub Incrémentation()
Dim vPlageNom
Set vPlageNom = Range("incrément").End(xlDown)ActiveWorkbook.Names.Add Name:="Bord_0001", RefersToR1C1:=vPlageNom
End Sub
qui va nommer la dernière cellule (pas la remplir). Est-ce celà que tu souhaites, nommer les cellules en les incrémentant, ou les remplir avec un N° incrémenté ? Si c'est un N° incrémenté, c'est plutôt
Code:
Sub Incrémentation2()
Dim vPlageNom
vPlageNom = Range("incrément").End(xlDown).Row
Range("incrément").Rows(vPlageNom + 1) = "Bord_" & Format(CInt(Right(Range("incrément").Rows(vPlageNom), 4)) + 1, "0000")
End Sub
pour le faire à l'ouverture, il faut mettre dans ThisWorkbook
Code:
Private Sub Workbook_Open()
Dim vPlageNom
vPlageNom = Range("increment").End(xlDown).Row
Range("increment").Rows(vPlageNom + 1) = "Bord_" & Format(CInt(Right(Range("increment").Rows(vPlageNom), 4)) + 1, "0000")
End Sub
à la sauvegarde, toujours dans ThisWorkbook, utiliser
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
et à la fermeture
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Bon courage :cool:
 

familitom

XLDnaute Nouveau
Re : Incrémenter une cellule

Merci pour tes propositions.

Lorsque je teste :

Private Sub Workbook_Open()
Dim vPlageNom
vPlageNom = Range("F6:G6").End(xlDown).Row
Range("F6:G6").Rows(vPlageNom + 1) = "Bord_" & Format(CInt(Right(Range("F6:G6").Rows(vPlageNom), 4)) + 1, "0000")
End Sub


dans Thisworkbook, j'ai une erreur d'éxécution 1004 sur la ligne "Range("F6...."

Faut_il que je remplace une valeur par rapport à mon fichier?

Merci
 

JNP

XLDnaute Barbatruc
Re : Incrémenter une cellule

Re :),
Difficile de te répondre sans savoir ce qu'il y a en F7:G7 et en dessous...
Range("F6:G6").End(xlDown).Row renvoie le N° de la dernière ligne en partant de F6 pour les cellules contigües... S'il n'y a rien dessous, cela va renvoyer la dernière ligne du classeur. Mais ça ne provoque pas une erreur pour autant...
D'un autre côté, la logique serait plutôt Range("F6").End(xlDown).Row pour ne chercher que dans la colonne F6 à partir de F7.
Bon courage :cool:
 

Bernard26

XLDnaute Nouveau
Re : Incrémenter une cellule

Bonjour,
C'est ma première macro sur Excel … pleine d'erreurs !

Je dois incrémenter un numéro de facture.
J'ouvre une facture précédente et la ré-initialise en lançant la macro par la combinaison de touches [cmd]+[Mjuscule]+[I
 

Bernard26

XLDnaute Nouveau
Re : Incrémenter une cellule

Bonjour,
Mon message précédent est tronqué, j'essaie de le renvoyer ici :confused:
C'est ma première macro sur Excel … pleine d'erreurs !

Je dois incrémenter un numéro de facture.
J'ouvre une facture précédente et la ré-initialise en lançant la macro par la combinaison de touches [cmd]+[Majuscule]+.
Le numéro de facture se trouve dans la cellule "C9" et la cellule "C8" n'est pas utilisée.
La séquence d'incrémentation est :


' ------------ Incrémente le N° de Facture
Range("C9").Select
Selection.Copy
' Séléctionne le N° de Facture actuel "C9" et le copie (ctrl + C)
Range("C8").Select
ActiveSheet.Paste
' Sélectionne la cellule "C8" au-dessus et y colle le N° de Facture actuel
Selection.AutoFill Destination:=Range("C8:C9"), Type:=xlFillDefault
' Copie la valeur de "C8" sur "C9" avec auto-incrémentation (nouveau numéro)
Range("C8").Select
ActiveCell.FormulaR1C1 = ""
Range("C8").Select
ActivCell.ColorIndex = 2
' Vide la cellule de transfert "C8" et supprime la couleur

L'incrémentation de la cellule fonctionne correctement, mais je ne sais pas supprimer la couleur de la cellule "C8".
J'ai une erreur de débogage.
Si j'utilise "Selection.ClearContents", la cellule "C8" se trouve verrouillée et au 2ème lancement de la macro elle est bloquée.

Vos remarques pourront me faire avancer.
Merci.
Bernard.
 

Discussions similaires

Statistiques des forums

Discussions
312 504
Messages
2 089 073
Membres
104 019
dernier inscrit
pascal la