OVH Cloud OVH Cloud

compteur dans une cellule

18 réponses
Avatar
sleg
Bonsoir,

voila mon probleme, dans une colonne j'ai des nombres et des N=B0 de
type abc001 et j'aimerais generer en B1 un system de compteur qui me
donnerais le prochain n=B0 abc002 puis lorsque abc002 serait not=E9 dans
ma colonne le compteur passerait automatiquement au suivant 003 etc..
second probleme mon compteur abc001 ne commencerais pas forcement a
001 voila mon probleme..

donc si vous avez une solution je suis preneur

merci d'avance.

8 réponses

1 2
Avatar
Filochard
je vous juste avoir un compteur qui me donne le prochain n° abcXXX
sans tenir compte des nombres à 4 chiffres.


Vous pouvez utiliser une formulle matricielle qui se valide par ctrl+maj+enter :

=1+MAX(SI(ESTTEXTE(plage);1*DROITE(plage;3)))

Avatar
garnote
Salut sleg,

Dur à suivre ton affaire !
Cette fois-ci, je suppose que les cellules de la colonne A
sont formatées « Standard » et je suppose que tu veux
incrémenter de 1 les cellules contenant des lettres suivies
de chiffres.Si c'est le cas, essaie ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 1 And Target.Count = 1 And Not IsNumeric(Target) Then
Set ici = [A65536].End(xlUp)
ici.AutoFill Destination:=Range(ici, ici.Offset(1, 0))
ici.Offset(1, 0).Cut [b1]
End If
Application.EnableEvents = True
End Sub

Serge

"sleg" a écrit dans le message de news:
On 16 oct, 14:21, "MichDenis" wrote:
Ceci fonctionne :

Les 3 premiers caractères sont deux que tu désires... mais tu dois
en avoir 3 !

=GAUCHE(INDEX(Plage;LIGNES(Plage));3)&TEXTE(SUBSTITUE(INDEX(Plage;LIGNES(Pl­age));GAUCHE(INDEX(Plage;LIGNES(Plage));3);"")+1;"000")

Attention aux coupures de lignes lors de la copie...
ce n'est qu'une formule.

"sleg" a écrit dans le message de news:

On 16 oct, 05:17, "MichDenis" wrote:





Un petit fichier exemple :http://cjoint.com/?kqfqHFaC7h

La formule aurait du se lire ainsi :
="abc"&TEXTE(SUBSTITUE(INDEX(Plage;LIGNES(Plage));"abc";"")+1;"000")

"sleg" a écrit dans le message de news:

On 15 oct, 23:15, "MichDenis" wrote:

Tu as raison, il manquait un bout de formule :

="abc" &TEXTE(SUBSTITUE( LIGNES(Plage)+1;"abc";"")+1;"000")

"sleg" a écrit dans le message de news:

On 15 oct, 22:01, "MichDenis" wrote:

Admettons que l'on simplifie la tâche :

Tu définis un "NOM" (du menu insertion - nom) ta colonne
de données en utilisant la fonction "Decaler()"

Et comme ta suite débute à 001, tu peux utiliser cette formule
en B1 :
="abc" &TEXTE( LIGNES(Plage)+1;"000")

Plage est le "Nom" de ta colonne que tu as définie.

"sleg" a écrit dans le message de news:

Bonsoir,

voila mon probleme, dans une colonne j'ai des nombres et des N° de
type abc001 et j'aimerais generer en B1 un system de compteur qui me
donnerais le prochain n° abc002 puis lorsque abc002 serait noté dans
ma colonne le compteur passerait automatiquement au suivant 003 etc..
second probleme mon compteur abc001 ne commencerais pas forcement a
001 voila mon probleme..

donc si vous avez une solution je suis preneur

merci d'avance.


MArche presque bien sauf que le abc est suivi de3 chiffre e dans ce
cas il ne m'affiche que les dixaine et les unite un zero a la place
des centaine une idée ?

Merci de coup de min- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Bon désolé je n'arrive pas a la faire amrcher je verais demain mais
merci de ton oup de main- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Ok je comprends pourquoi. parce que dans ma colonne a je n'ai pas que
des abcxxx j'ai aussi des nombre a 4 chiffres est il possible de le
faire fonctionner dans ces conditions ?- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Voici ce que j'ai en gros dans ma colonne

1231
1232
1233
abc501
abc502
1234
1235
1236
abc502

je vous juste avoir un compteur qui me donne le prochain n° abcXXX
sans tenir compte des nombres à 4 chiffres.

merci de ton aide.




Avatar
garnote
Encore un p'tit effort !
Et si la colonne A est formatée « Texte »
et ne contient que des nombres ou
des abc suivis de nombres, il y a ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 1 And Target.Count = 1 And Left(Target, 3) = "abc" Then
Set ici = [A65536].End(xlUp)
ici.AutoFill Destination:=Range(ici, ici.Offset(1, 0))
ici.Offset(1, 0).Cut [b1]
End If
Application.EnableEvents = True
End Sub

Serge


"garnote" a écrit dans le message de news: %23xsodX$
Salut sleg,

Dur à suivre ton affaire !
Cette fois-ci, je suppose que les cellules de la colonne A
sont formatées « Standard » et je suppose que tu veux
incrémenter de 1 les cellules contenant des lettres suivies
de chiffres.Si c'est le cas, essaie ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 1 And Target.Count = 1 And Not IsNumeric(Target) Then
Set ici = [A65536].End(xlUp)
ici.AutoFill Destination:=Range(ici, ici.Offset(1, 0))
ici.Offset(1, 0).Cut [b1]
End If
Application.EnableEvents = True
End Sub

Serge

"sleg" a écrit dans le message de news:
On 16 oct, 14:21, "MichDenis" wrote:
Ceci fonctionne :

Les 3 premiers caractères sont deux que tu désires... mais tu dois
en avoir 3 !

=GAUCHE(INDEX(Plage;LIGNES(Plage));3)&TEXTE(SUBSTITUE(INDEX(Plage;LIGNES(Pl­age));GAUCHE(INDEX(Plage;LIGNES(Plage));3);"")+1;"000")

Attention aux coupures de lignes lors de la copie...
ce n'est qu'une formule.

"sleg" a écrit dans le message de news:

On 16 oct, 05:17, "MichDenis" wrote:





Un petit fichier exemple :http://cjoint.com/?kqfqHFaC7h

La formule aurait du se lire ainsi :
="abc"&TEXTE(SUBSTITUE(INDEX(Plage;LIGNES(Plage));"abc";"")+1;"000")

"sleg" a écrit dans le message de news:

On 15 oct, 23:15, "MichDenis" wrote:

Tu as raison, il manquait un bout de formule :

="abc" &TEXTE(SUBSTITUE( LIGNES(Plage)+1;"abc";"")+1;"000")

"sleg" a écrit dans le message de news:

On 15 oct, 22:01, "MichDenis" wrote:

Admettons que l'on simplifie la tâche :

Tu définis un "NOM" (du menu insertion - nom) ta colonne
de données en utilisant la fonction "Decaler()"

Et comme ta suite débute à 001, tu peux utiliser cette formule
en B1 :
="abc" &TEXTE( LIGNES(Plage)+1;"000")

Plage est le "Nom" de ta colonne que tu as définie.

"sleg" a écrit dans le message de news:

Bonsoir,

voila mon probleme, dans une colonne j'ai des nombres et des N° de
type abc001 et j'aimerais generer en B1 un system de compteur qui me
donnerais le prochain n° abc002 puis lorsque abc002 serait noté dans
ma colonne le compteur passerait automatiquement au suivant 003 etc..
second probleme mon compteur abc001 ne commencerais pas forcement a
001 voila mon probleme..

donc si vous avez une solution je suis preneur

merci d'avance.


MArche presque bien sauf que le abc est suivi de3 chiffre e dans ce
cas il ne m'affiche que les dixaine et les unite un zero a la place
des centaine une idée ?

Merci de coup de min- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Bon désolé je n'arrive pas a la faire amrcher je verais demain mais
merci de ton oup de main- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Ok je comprends pourquoi. parce que dans ma colonne a je n'ai pas que
des abcxxx j'ai aussi des nombre a 4 chiffres est il possible de le
faire fonctionner dans ces conditions ?- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Voici ce que j'ai en gros dans ma colonne

1231
1232
1233
abc501
abc502
1234
1235
1236
abc502

je vous juste avoir un compteur qui me donne le prochain n° abcXXX
sans tenir compte des nombres à 4 chiffres.

merci de ton aide.








Avatar
sleg
On 16 oct, 14:48, "garnote" wrote:
Salut sleg,

Une autre approche qui semble convenir :
Si par exemple, la colonne A contient des cellules formatées texte,
cette macro de feuille incrémente la dernière cellule de la colonne A
de 1 et inscrit le résultat en B1.
Dans ce cas, tu n'es pas obligé de nommer ta plage avec DECALER
et tu n'as pas à te préoccuper du nombre de caractères de tes cellu les.

Clic droit sur l'onglet de ta feuille et clic sur visualiser le code.
Colle alors cette macro dans la feuille vierge qui devrait apparaître :

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 1 And Target.Count = 1 Then
Set ici = [A65536].End(xlUp)
ici.AutoFill Destination:=Range(ici, ici.Offset(1, 0))
ici.Offset(1, 0).Cut [b1]
End If
Application.EnableEvents = True
End Sub

Serge

"sleg" a écrit dans le message de news: 11924753
Bonsoir,

voila mon probleme, dans une colonne j'ai des nombres et des N° de
type abc001 et j'aimerais generer en B1 un system de compteur qui me
donnerais le prochain n° abc002 puis lorsque abc002 serait noté dans
ma colonne le compteur passerait automatiquement au suivant 003 etc..
second probleme mon compteur abc001 ne commencerais pas forcement a
001 voila mon probleme..

donc si vous avez une solution je suis preneur

merci d'avance.


merci mais toujours un probleme :
1231
1232
1233
abc501
abc502
1234
1235
1236
abc502

lors de la saisie d'un nouveau n° ABCxxx ça fonctionne impec mais si
je saisi un n° 1237 alors la je recupere ce derniere n° alors que le
compteur ne devrais pas bouger et rester sur le abc503.

merci de votre aide.

Avatar
garnote
Salut Sleg,

Alors regarde mes deux suggetions de 09:09 et 09:49
Et au début des macros ajoute :
On Error Resume Next

Serge

"sleg" a écrit dans le message de news:
On 16 oct, 14:48, "garnote" wrote:
Salut sleg,

Une autre approche qui semble convenir :
Si par exemple, la colonne A contient des cellules formatées texte,
cette macro de feuille incrémente la dernière cellule de la colonne A
de 1 et inscrit le résultat en B1.
Dans ce cas, tu n'es pas obligé de nommer ta plage avec DECALER
et tu n'as pas à te préoccuper du nombre de caractères de tes cellules.

Clic droit sur l'onglet de ta feuille et clic sur visualiser le code.
Colle alors cette macro dans la feuille vierge qui devrait apparaître :

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 1 And Target.Count = 1 Then
Set ici = [A65536].End(xlUp)
ici.AutoFill Destination:=Range(ici, ici.Offset(1, 0))
ici.Offset(1, 0).Cut [b1]
End If
Application.EnableEvents = True
End Sub

Serge

"sleg" a écrit dans le message de news:
Bonsoir,

voila mon probleme, dans une colonne j'ai des nombres et des N° de
type abc001 et j'aimerais generer en B1 un system de compteur qui me
donnerais le prochain n° abc002 puis lorsque abc002 serait noté dans
ma colonne le compteur passerait automatiquement au suivant 003 etc..
second probleme mon compteur abc001 ne commencerais pas forcement a
001 voila mon probleme..

donc si vous avez une solution je suis preneur

merci d'avance.


merci mais toujours un probleme :
1231
1232
1233
abc501
abc502
1234
1235
1236
abc502

lors de la saisie d'un nouveau n° ABCxxx ça fonctionne impec mais si
je saisi un n° 1237 alors la je recupere ce derniere n° alors que le
compteur ne devrais pas bouger et rester sur le abc503.

merci de votre aide.

Avatar
garnote
Cette macro me semble compétente.
Que les cellules de la colonne A soient
en « Standard » ou en « Texte » :

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
If Target.Column = 1 And Target.Count = 1 And Left(Target, 3) = "abc" Then
Set ici = [A65536].End(xlUp)
ici.AutoFill Destination:=Range(ici, ici.Offset(1, 0))
ici.Offset(1, 0).Cut [b1]
End If
Application.EnableEvents = True
End Sub

Est-ce bien ce que tu veux obtenir ?

Serge

"sleg" a écrit dans le message de news:
On 16 oct, 14:48, "garnote" wrote:
Salut sleg,

Une autre approche qui semble convenir :
Si par exemple, la colonne A contient des cellules formatées texte,
cette macro de feuille incrémente la dernière cellule de la colonne A
de 1 et inscrit le résultat en B1.
Dans ce cas, tu n'es pas obligé de nommer ta plage avec DECALER
et tu n'as pas à te préoccuper du nombre de caractères de tes cellules.

Clic droit sur l'onglet de ta feuille et clic sur visualiser le code.
Colle alors cette macro dans la feuille vierge qui devrait apparaître :

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 1 And Target.Count = 1 Then
Set ici = [A65536].End(xlUp)
ici.AutoFill Destination:=Range(ici, ici.Offset(1, 0))
ici.Offset(1, 0).Cut [b1]
End If
Application.EnableEvents = True
End Sub

Serge

"sleg" a écrit dans le message de news:
Bonsoir,

voila mon probleme, dans une colonne j'ai des nombres et des N° de
type abc001 et j'aimerais generer en B1 un system de compteur qui me
donnerais le prochain n° abc002 puis lorsque abc002 serait noté dans
ma colonne le compteur passerait automatiquement au suivant 003 etc..
second probleme mon compteur abc001 ne commencerais pas forcement a
001 voila mon probleme..

donc si vous avez une solution je suis preneur

merci d'avance.


merci mais toujours un probleme :
1231
1232
1233
abc501
abc502
1234
1235
1236
abc502

lors de la saisie d'un nouveau n° ABCxxx ça fonctionne impec mais si
je saisi un n° 1237 alors la je recupere ce derniere n° alors que le
compteur ne devrais pas bouger et rester sur le abc503.

merci de votre aide.

Avatar
sleg
On 16 oct, 16:08, "garnote" wrote:
Salut Sleg,

Alors regarde mes deux suggetions de 09:09 et 09:49
Et au début des macros ajoute :
On Error Resume Next

Serge

"sleg" a écrit dans le message de news: 11925396
On 16 oct, 14:48, "garnote" wrote:





Salut sleg,

Une autre approche qui semble convenir :
Si par exemple, la colonne A contient des cellules formatées texte,
cette macro de feuille incrémente la dernière cellule de la colonne A
de 1 et inscrit le résultat en B1.
Dans ce cas, tu n'es pas obligé de nommer ta plage avec DECALER
et tu n'as pas à te préoccuper du nombre de caractères de tes cel lules.

Clic droit sur l'onglet de ta feuille et clic sur visualiser le code.
Colle alors cette macro dans la feuille vierge qui devrait apparaître :

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 1 And Target.Count = 1 Then
Set ici = [A65536].End(xlUp)
ici.AutoFill Destination:=Range(ici, ici.Offset(1, 0))
ici.Offset(1, 0).Cut [b1]
End If
Application.EnableEvents = True
End Sub

Serge

"sleg" a écrit dans le message de news: 119247
Bonsoir,

voila mon probleme, dans une colonne j'ai des nombres et des N° de
type abc001 et j'aimerais generer en B1 un system de compteur qui me
donnerais le prochain n° abc002 puis lorsque abc002 serait noté dans
ma colonne le compteur passerait automatiquement au suivant 003 etc..
second probleme mon compteur abc001 ne commencerais pas forcement a
001 voila mon probleme..

donc si vous avez une solution je suis preneur

merci d'avance.


merci mais toujours un probleme :
1231
1232
1233
abc501
abc502
1234
1235
1236
abc502

lors de la saisie d'un nouveau n° ABCxxx ça fonctionne impec mais si
je saisi un n° 1237 alors la je recupere ce derniere n° alors que le
compteur ne devrais pas bouger et rester sur le abc503.

merci de votre aide.- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Ok désolé je n'avais pas vu tous tes messages donc cette function :
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 1 And Target.Count = 1 And Not
IsNumeric(Target) Then
Set ici = [A65536].End(xlUp)
ici.AutoFill Destination:=Range(ici, ici.Offset(1, 0))
ici.Offset(1, 0).Cut [b1]
End If
Application.EnableEvents = True
End Sub


fonction a merveille merci beaucoup Serge.


Avatar
isabelle
bonjour sleg,

celle ci donné par Filochard fonctionne très bien,

="abc"&1+MAX(SI(ESTTEXTE(Plage);1*DROITE(Plage;3)))
validé avec Crtl+Maj+Enter

isabelle

On 16 oct, 14:48, "garnote" wrote:

Salut sleg,

Une autre approche qui semble convenir :
Si par exemple, la colonne A contient des cellules formatées texte,
cette macro de feuille incrémente la dernière cellule de la colonne A
de 1 et inscrit le résultat en B1.
Dans ce cas, tu n'es pas obligé de nommer ta plage avec DECALER
et tu n'as pas à te préoccuper du nombre de caractères de tes cellules.

Clic droit sur l'onglet de ta feuille et clic sur visualiser le code.
Colle alors cette macro dans la feuille vierge qui devrait apparaître :

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 1 And Target.Count = 1 Then
Set ici = [A65536].End(xlUp)
ici.AutoFill Destination:=Range(ici, ici.Offset(1, 0))
ici.Offset(1, 0).Cut [b1]
End If
Application.EnableEvents = True
End Sub

Serge

"sleg" a écrit dans le message de news:
Bonsoir,

voila mon probleme, dans une colonne j'ai des nombres et des N° de
type abc001 et j'aimerais generer en B1 un system de compteur qui me
donnerais le prochain n° abc002 puis lorsque abc002 serait noté dans
ma colonne le compteur passerait automatiquement au suivant 003 etc..
second probleme mon compteur abc001 ne commencerais pas forcement a
001 voila mon probleme..

donc si vous avez une solution je suis preneur

merci d'avance.



merci mais toujours un probleme :
1231
1232
1233
abc501
abc502
1234
1235
1236
abc502

lors de la saisie d'un nouveau n° ABCxxx ça fonctionne impec mais si
je saisi un n° 1237 alors la je recupere ce derniere n° alors que le
compteur ne devrais pas bouger et rester sur le abc503.

merci de votre aide.




1 2