Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/10/2011, 14h05   #1
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 2
Points : 2
Par défaut Mauvaise gestion du changement de mois

Bonjour,

J'ai fait une macro afin d'afficher en automatique une série incrémentée lorsqu'une colonne précédente est saisie.
Mais je viens de rencontrer le problème suite au changement de mois qui est intervenu.

Code :
1
2
3
4
5
6
7
8
9
10
 
Private Sub Worksheet_Change(ByVal Target As Range)
 
If Not Intersect(Target, Range("A2:A65535")) Is Nothing Then
Cells(Target.Row, 3).Value = Date
Cells(Target.Row, 4).Value = "CO " & Format(Date, "yymm ") & Format(IIf(Range("D" & Target.Row - 1).Value Like "CO " & Format(Date, "yymm") & "*", CLng(Replace(Range("D" & Target.Row - 1).Value, "CO " & Format(Date, "yymm"), "")) + 1, 1), "000")
 
End If
 
End Sub
La macro récupère bien la valeur finale du dessus pour l'incrémentée mais elle ne fonctionne pas suite au changement de mois.

Est-il possible que la macro se calque sur la date plutôt que sur la ligne du dessus pour le mois ? Et tant qu'à faire, est-il possible qu'au changement de mois, le compteur final se réinitialise à 1 ?

Cordialement,

Adidu44
adidu44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 01h07   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Bonsoir
A part le Clng, je ne vois pas où est le prblème. Le compteur s'incrémente et redevient CO xxyy 001 à chaque changement du mois.
Code :
1
2
3
4
5
6
7
8
9
10
11
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long, S As Long
Dim Code As String
 
If Target.Column = 1 And Target.Row > 1 Then
    i = Target.Row
    Code = "CO " & Format(Date, "yymm")
    S = IIf(Range("D" & i - 1) Like Code & "*", Val(Mid(Range("D" & i - 1), 8)) + 1, 1)
    Range("C" & i & ":D" & i) = Array(Date, Code & Format(S, "000"))
End If
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/10/2011, 15h57   #3
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 2
Points : 2
Merci beaucoup, cela marche parfaitement.

Cordialement,

Adidu44
adidu44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h07.


 
 
 
 
Partenaires

Hébergement Web