Incrémenter un n° de commande (Faire plus simple que je l'ai fait…)

YANN-56

XLDnaute Barbatruc
Bonsoir à ceux qui passeront par là.

Cela marche bien. Cela fait joli et un peu "Pro" :)

Mais il ne me plait pas d'avoir eu à écrire ces sept lignes pas bouffables! :mad:

Code:
Dim TIRET As Variant
TIRET = "_"

Worksheets("Feuil1").Cells(10, 1).Value = Left(Worksheets("Feuil1").Cells(10, 1).Value, _
InStrRev(Worksheets("Feuil1").Cells(10, 1).Value, TIRET, -1)) _
& Right(Worksheets("Feuil1").Cells(10, 1).Value, _
(Len(Worksheets("Feuil1").Cells(10, 1).Value) - _
InStrRev(Worksheets("Feuil1").Cells(10, 1).Value, TIRET, -1))) + 1

Ouf! Bonjour la place dans ma Macro!!! Il y a certainement plus simple et lisible…. Non?

Si Oui, la roue de la souris et moi sommes preneurs, et Merci d'avance.

Bonne fin de fin de semaine à tous.

Yann
 

Pièces jointes

  • N°CDE.xls
    25 KB · Affichages: 91

Paritec

XLDnaute Barbatruc
Re : Incrémenter un n° de commande (Faire plus simple que je l'ai fait…)

Bonjour Yann le forum
regardes si cela correspond a ce que tu souhaites
a+
papou :)
Code:
Range("A10") = Left(Range("A10"), Len(Range("A10")) - 3) & Right(Feuil1.Range("A10"), 3) + 1
 

pierrejean

XLDnaute Barbatruc
Re : Incrémenter un n° de commande (Faire plus simple que je l'ai fait…)

bonsoir YANN-56

Une solution

Code:
Private Sub CommandButton1_Click()
x = Cells(10, 1)
y = Mid(x, InStrRev(x, "_") + 1)
Cells(10, 1) = Replace(x, y, y * 1 + 1)
End Sub

Edit:Salut Papou
nb: teste ta formule avant 100 ou apres 999
 

Pièces jointes

  • N°CDE.zip
    10.6 KB · Affichages: 36
Dernière édition:

YANN-56

XLDnaute Barbatruc
Re : Incrémenter un n° de commande (Faire plus simple que je l'ai fait…)

Superbe!!!

Je viens de prendre une belle leçon de modestie et de simplicité! :p

J'ai mis un morceau de temps avant d'oser ramener ma fraise,
mais, j'ai bien fait de venir.

Merci Paritec, Merci pierrejean, par ordre d'entrée en aide.

Contrairement à ma "Bip, Bip", j'aime bien ce qui est bref. :D

C'est sympa de votre part.

Plein de bonnes choses pour la nouvelle semaine qui vient.

Yann

P.S.
pierrejean, on a encore gagné de la place:

Code:
Private Sub CommandButton1_Click()
x = Cells(10, 1): y = Mid(x, InStrRev(x, "_") + 1): Cells(10, 1) = Replace(x, y, y * 1 + 1)
End Sub
 
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : Incrémenter un n° de commande (Faire plus simple que je l'ai fait…)

Bonjour Yves Pierrejean,
oui je sais Pierrejean, j'y ai pensé, mais après avoir posté !!
mais bon la tienne est la bonne solution alors le but est atteint, Yves est dépanné
a+
Papou :)
 

JNP

XLDnaute Barbatruc
Re : Incrémenter un n° de commande (Faire plus simple que je l'ai fait…)

Bonjour à tous :),
Une tout autre façon de faire avec
Code:
Private Sub CommandButton1_Click()
Cells(10, 1) = Cells(10, 1) + 1
End Sub
Vu que c'est une procédure de feuille, le nom de la feuille n'est pas nécessaire. Voir PJ.
Bonne journée :cool:
 

Pièces jointes

  • N°CDE(1).xls
    31.5 KB · Affichages: 86
  • N°CDE(1).xls
    31.5 KB · Affichages: 89
  • N°CDE(1).xls
    31.5 KB · Affichages: 85

job75

XLDnaute Barbatruc
Re : Incrémenter un n° de commande (Faire plus simple que je l'ai fait…)

Bonjour le fil, le forum,

Pour le fun cette macro :

Code:
Private Sub CommandButton1_Click()
[A10].AutoFill [A10:A11]: [A10].Delete xlUp
End Sub

Mais dans ce cas il y a une limite à l'incrémentation...

Bien sûr c'est la solution de JNP que je choisirais :)

Edit : il y a aussi :

Code:
[A10].AutoFill [A10:A11]: [A11].Cut [A10]

A+
 

Pièces jointes

  • N°CDE(1).xls
    32 KB · Affichages: 70
  • N°CDE(1).xls
    32 KB · Affichages: 66
  • N°CDE(1).xls
    32 KB · Affichages: 67
Dernière édition:

YANN-56

XLDnaute Barbatruc
Re : Incrémenter un n° de commande (Faire plus simple que je l'ai fait…)

Bonjour à tous,

Je passe vite fait; je suis pris par le temps…
La solution de JNP est très efficace!!!
(J'ai aussi à apprendre les autres façons de faire proposées)

Je vais devoir gérer le format de la cellule concernée avec:

Code:
Selection.NumberFormat = """NOM_FOURNISSEUR_""####0"

Un détail qui peut-être va m'ennuyer: Le "NON_FOURNISSEUR" est variable,
et j'ai une cinquantaine de fournisseurs qui chacun a son propre classeur avec une feuille "TARIF", et une feuille "FICHE".

C'est dans cette dernière qu'est mis en mémoire le dernier numéro de commande via l'USF d'un Classeur maître.

Je file, je suis à la bourre… Je reviens en deuxième moitié de PM

Grand Merci à vous tous.

Yann
 

JNP

XLDnaute Barbatruc
Re : Incrémenter un n° de commande (Faire plus simple que je l'ai fait…)

Re :),
Pour récupérer le nom de ton fournisseur (ça peut toujours servir :p...), une petite fonction personnalisée
Code:
Function Fournisseur(Cellule As Range) As String
Application.Volatile
If Cellule.Count = 1 And Len(Cellule.NumberFormat) > 10 Then
Fournisseur = Mid(Cellule.NumberFormat, 2, Len(Cellule.NumberFormat) - 8)
Else
Fournisseur = ""
End If
End Function
Bonne AM :cool:
 

YANN-56

XLDnaute Barbatruc
Re : Incrémenter un n° de commande (Faire plus simple que je l'ai fait…)

Bonsoir JNP, à ceux qui m'ont répondu, et à ceux qui passeront par là.

Les feuilles "FICHE" sont construites ainsi que le montre le Classeur joint.

Tous les classeurs propres aux fournisseurs ont leur feuille "FICHE"

J'ai au départ écrit dans la cellule à droite de "DERNIERE COMMANDE"
leur nom abrégé, (Dans la limite de cinq caractères) puis ajouté "_000"

Ceci par VBA en ouvrant successivement les classeurs dont le chemin est dans un SubItem d'une ListView
(En ayant dressé la liste), et avoir dans cette Feuille enregistré l'écriture.

Il est évident que pour ceux dont l'abrégé est inférieur à 5, cette cellule n'a pas le même "Len"

C'est là où je suis embêté pour modifier le dernier "000"

Bon! J'avoue avoir du mal à m'expliquer. A moi, aussi, de bosser un peu!
-----------------------------------------------------------------------------------------
Pour répondre à ton sourire amusé, et instruire ceux qui ne le sauraient pas:

Après-midi est encore masculin, pour ce qui est du genre en français…
Bien que moult présentateurs TV parlent d'une belle après-midi.
(Après tu rames pour leur dire le contraire)

L'utilisation de "PM" est celle de l'abréviation de "Past Méridiem",
alors que "AM" est celle de "Ante Péridiem".

Gros risque, donc, de confondre "AM" avec après-midi…car c'est que le matin.

C'est comme "Pamplemousse" qui me valait une baffe de ma Maman quand je disait "Un" :mad:
Depuis il a changé de sexe (Env. 1950/1960), et j'ai l'air d'un analphabète quand je dis "Une" !!!

Comme le disait le petit Robert assis sur les genoux de la Rousse. :p

Dur d'apprendre! Mais grâce à toi, j'ai envie de poursuivre.

Je vais donc fouiner avec tes et ces aides dont je remercie; toi et vous.

Diantre, pour un Good Afternon, il est un peu tard! Les crevettes de l'apéro étaient trop copieuses. :eek:

Mais pas trop, pour ce soir, et essayer de comprendre ce qui m'est montré et de tenter de l'adapter à ce que je cherche à faire.

"Merci" sera mon dernier mot pour clore mon "Bla bla"… Ouf!

Au plaisir.

Yann

P.S.
Je découvre les Functions. Je n'ai rien pigé aux >10 et -8
Même pire, je ne sais pas comment provoquer leur évènement.
C'est dire combien j'ai encore beaucoup de choses à apprendre! :)
 

Pièces jointes

  • EXP_1.xls
    17.5 KB · Affichages: 69
Dernière édition:

job75

XLDnaute Barbatruc
Re : Incrémenter un n° de commande (Faire plus simple que je l'ai fait…)

Bonsoir YANN-56, le fil,

Finalement en adaptant ma dernière proposition, ça marche bien :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target Like "*_###*" Then
Cancel = True
Target.AutoFill Target.Resize(2): Target.Offset(1).Cut Target
End If
End Sub

Fichier joint.

A+
 

Pièces jointes

  • EXP_1(1).xls
    35 KB · Affichages: 51

job75

XLDnaute Barbatruc
Re : Incrémenter un n° de commande (Faire plus simple que je l'ai fait…)

Re,

Une petite modif pour que ça marche vraiment bien :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target Like "*_###*" Then
[COLOR="Red"]Dim ad$[/COLOR]
ad = Target.Address
Cancel = True
Target.AutoFill Target.Resize(2): Target.Offset(1).Cut Target
Range(ad) = Range(ad)
End If
End Sub

Ne me demandez par pourquoi, je n'en sais trop rien :eek:

A+
 

Pièces jointes

  • EXP_1(2).xls
    35.5 KB · Affichages: 52