VBA Max droite de plusieurs valeurs

titiborregan5

XLDnaute Accro
Bonjour à tous,

je travaille actuellement avec un userform en guise de formulaire afin de créer des lignes.
Chaque ligne comporte un numéro d'opération en colonne A, qui se crée ainsi: service/2015/xxxxx
le xxxxx correspondant à la dernière ligne pleine au format "00000" afin d'avoir toujours le même format...

Ce que j'aimerai c'est pouvoir supprimer des lignes mais du coup si je crée une opération ensuite, il y aura doublon avec la ligne précédente...

Du coup ma question c'est:
est-il possible de faire un max(droite(a1;5)) sur toutes les lignes remplies de la colonne A?
Si non, comment faire un numéro avec incrémentation automatique et suppression possible?

Merci à tous!!

Tibo
 
G

Guest

Guest
Re : VBA Max droite de plusieurs valeurs

Bonjour,

Par formule matricielle dans une cellule et qui te donnera le prochain num, =MAX(CNUM(DROITE($A1:$A500;5))) +1
Valider par CTRL+MAJ+ENTER (mais ça tu le sais déjà:))

A+
 

job75

XLDnaute Barbatruc
Re : VBA Max droite de plusieurs valeurs

Bonjour titiborregan5, Hasco,

Fichier joint avec cette macro dans le code de la feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Set r = Intersect(Target, Me.UsedRange)
If r Is Nothing Then Exit Sub
For Each r In r 'si entrées multiples
  If Application.CountA(r.EntireRow) Then
    If r.Row > 1 And Val(Cells(r.Row, 1)) = 0 Then _
      Cells(r.Row, 1) = Application.Max([A:A]) + 1
  End If
Next
End Sub
Le plus simple est d'appliquer un format nombre personnalisé à la colonne A.

A+
 

Pièces jointes

  • Incrémentation(1).xls
    38.5 KB · Affichages: 62
  • Incrémentation(1).xls
    38.5 KB · Affichages: 52
  • Incrémentation(1).xls
    38.5 KB · Affichages: 57

titiborregan5

XLDnaute Accro
Re : VBA Max droite de plusieurs valeurs

Bonjour job,

merci pour ton retour, très proche de mon attente.
là où ça me pose problème, c'est que le nom du service peut changer, et du coup, le format spécial est difficile à mettre en place;
A moins qu'il y ait un code que je ne connais pas...

En gros, vu mon format, ma question était de savoir si on peut coupler la fonction max avec droite...ça m'a l'air compliqué tout de même...

Je pense passer par une étape d'écriture pour récupérer les valeurs droite(ax;5) et ensuite max+1...

Encore merci beaucoup...
Mais le peu de souplesse de mon outil ne me permet pas, en l'état d'appliquer ton code!

A+
 

titiborregan5

XLDnaute Accro
Re : VBA Max droite de plusieurs valeurs

Je confirme, à chaque fois que je crée une opération via mon formulaire, j'écris dans une colonne masquée la valeur qui va changer...
Ainsi je peux faire un max de cette colonne et même en cas de suppression mon incrémentation continue.

Désolé de vous avoir sollicité pour au final ne pas retenir une de vos solutions!!! Mais un grand merci à vous 2!!

A bientôt

Tibo
 

job75

XLDnaute Barbatruc
Re : VBA Max droite de plusieurs valeurs

Re,

La macro si l'on veut incrémenter un texte :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim txt$, r As Range, tablo, maxi&, t
txt = "Service/2015/" 'à adapter
Set r = Intersect(Target, Me.UsedRange)
If r Is Nothing Then Exit Sub
For Each r In r 'si entrées multiples
  If Application.CountA(r.EntireRow) And _
    r.Row > 1 And Val(Right(Cells(r.Row, 1), 5)) = 0 Then
    tablo = Range("A1", Range("A" & Rows.Count).End(xlUp)(2))
    maxi = 0
    For Each t In tablo
      If Val(Right(t, 5)) > maxi Then maxi = Val(Right(t, 5))
    Next
    Cells(r.Row, 1) = txt & Format(maxi + 1, "00000")
  End If
Next
End Sub
Nouveau fichier joint.

A+
 

Pièces jointes

  • Incrémentation d'un texte(1).xls
    38 KB · Affichages: 56

Discussions similaires

Réponses
18
Affichages
642

Statistiques des forums

Discussions
312 294
Messages
2 086 897
Membres
103 404
dernier inscrit
sultan87