Visiblement tous le monde sèche.
lire la valeur de la première cellule et en extraire le numéro et le texte puis reconstruire dans les autres cellules.
Private Sub ButtonIncr_Click(sender As Object, e As EventArgs) Handles ButtonIncr.Click Dim DGVsource As DataGridView = MonDgv Dim mavaleur = DGVsource.Item(DGVsource.CurrentCellAddress.X, DGVsource.CurrentCellAddress.Y).Value.ToString Dim maSelCell = DGVsource.SelectedCells Dim coli = maSelCell(maSelCell.Count - 1).ColumnIndex Dim RowI = maSelCell(maSelCell.Count - 1).RowIndex Dim colinb = maSelCell(0).ColumnIndex - maSelCell(maSelCell.Count - 1).ColumnIndex + 1 Dim Rowinb = maSelCell(0).RowIndex - maSelCell(maSelCell.Count - 1).RowIndex + 1 mavaleur = DGVsource.Item(coli, RowI).Value.ToString Dim Moncar As String = "" Dim monNombre As String = "" Dim MonDrap = "SUFFIXE" Dim MonSuffixe = "" ' Isoler les chaines de caractères For i = 1 To Len(mavaleur) Moncar = Microsoft.VisualBasic.Left(Microsoft.VisualBasic.Right(mavaleur, i), 1) Select Case True Case Is = Not (Asc(Moncar) >= 48 And Asc(Moncar) <= 57) And MonDrap = "SUFFIXE" 'MonDrap = "SUFFIXE" MonSuffixe = Moncar & MonSuffixe Case Is = Asc(Moncar) >= 48 And Asc(Moncar) <= 57 MonDrap = "PREFIXE" monNombre = Moncar & monNombre Case Is = MonDrap = "PREFIXE" Moncar = Microsoft.VisualBasic.Left(mavaleur, Len(mavaleur) - i + 1) Exit For End Select Moncar = "" Next Dim monformat = Len(monNombre) For j = 0 To Rowinb - 1 DGVsource.Item(coli, RowI).Value = Moncar & monNombre & MonSuffixe Dim Nomval = Moncar & monNombre & MonSuffixe If monNombre <> "" Then monNombre = monNombre + 1 Do While Len(monNombre) < monformat monNombre = "0" & monNombre Loop End If RowI = RowI + 1 Next j End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPublic Class Form2
Private COUNT As Integer
Private Sub Form2_Load(sender As Object, e As System.EventArgs) Handles Me.Load
COUNT = 59
For iter As Integer = 0 To 10
DataGridView1.Rows.Add()
Next
DataGridView1.Rows(0).Cells(0).Value = "TEST" & COUNT
End Sub
Private Sub DataGridView1_CellMouseDown(sender As Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseDown
If e.ColumnIndex <> 0 Or e.RowIndex <> 0 Then
Exit Sub
End If
End Sub
Private Sub DataGridView1_CellMouseUp(sender As Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseUp
For iter = 0 To e.RowIndex
DataGridView1.Rows(iter).Cells(1).Value = "TEST" & (COUNT + iter).ToString
Next
End Sub
End Class
Dim str As String = "BONJOUR"
Dim x As Integer = str.Length
Public Class Form1 Private COUNT As Integer Private PosInit(1) As Integer Private PosFin(1) As Integer Private Moncar As String = "" Private monNombre As String = "" Private MonSuffixe = "" Private DGVsource As DataGridView Private monformat Private Drapeau As Integer = 0 Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load COUNT = 59 For iter As Integer = 0 To 10 DataGridView1.Rows.Add() Next DataGridView1.Rows(0).Cells(0).Value = "cs_ShayW" & COUNT & "Test" End Sub Private Sub DataGridView1_CellMouseDown(sender As Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseDown DGVsource = sender ' Lire les dimensions de la cellule active Dim Width As Integer = 0 Dim height As Integer = 0 Dim rect As Rectangle rect = DGVsource.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, False) Width = rect.Width height = rect.Height 'Balise pour accepter l'incrémentation If e.Location.X > Width - Width / 10 And e.Location.Y > height - height / 5 Then Drapeau = 1 Else Drapeau = 0 Exit Sub End If If e.ColumnIndex <> -1 And e.RowIndex <> -1 Then Dim mavaleur As String = DGVsource.Item(e.ColumnIndex, e.RowIndex).Value If mavaleur Is Nothing Then mavaleur = "" Drapeau = 0 Exit Sub End If Dim MonDrap = "SUFFIXE" For i = 0 To mavaleur.Length - 1 Moncar = mavaleur.Substring(mavaleur.Length - i - 1, 1) Select Case True Case Is = Not (Asc(Moncar) >= 48 And Asc(Moncar) <= 57) And MonDrap = "SUFFIXE" MonSuffixe = Moncar & MonSuffixe Case Is = Asc(Moncar) >= 48 And Asc(Moncar) <= 57 MonDrap = "PREFIXE" monNombre = Moncar & monNombre Case Is = MonDrap = "PREFIXE" Moncar = mavaleur.Substring(0, mavaleur.Length - i) Exit For End Select Moncar = "" Next monformat = monNombre.Length PosInit(0) = e.RowIndex PosInit(1) = e.ColumnIndex End If End Sub Private Sub DataGridView1_CellMouseMove(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseMove DGVsource = DirectCast(sender, DataGridView) Dim x As Integer = 0 Dim y As Integer = 0 Dim Width As Integer = 0 Dim height As Integer = 0 ' Lire les dimensions de la cellule active Dim rect As Rectangle rect = DGVsource.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, False) x = rect.X + rect.Size.Width ' + label1.Height y = rect.Y + rect.Size.Height - Label1.Height Width = rect.Width height = rect.Height If e.Location.X > Width - Width / 10 And e.Location.Y > height - height / 5 Then Me.Cursor = Cursors.Cross Me.Label1.Visible = True Me.Label1.Location = New Point(x, y) ElseIf Drapeau = 1 Then Me.Label1.Location = New Point(x, y) Else Me.Cursor = Cursors.Arrow Me.Label1.Visible = False End If End Sub Private Sub DataGridView1_CellMouseUp(sender As Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseUp PosFin(0) = e.RowIndex PosFin(1) = e.ColumnIndex If e.ColumnIndex = -1 Or e.RowIndex = -1 Or Drapeau = 0 Then Exit Sub Else For iter = PosInit(0) To e.RowIndex DGVsource.Item(PosInit(1), iter).Value = Moncar & monNombre & MonSuffixe Dim Nomval = Moncar & monNombre & MonSuffixe If monNombre <> "" Then monNombre = monNombre + 1 Do While monNombre.Length < monformat monNombre = "0" & monNombre Loop End If Next End If Moncar = "" monNombre = "" MonSuffixe = "" Drapeau = 0 End Sub End Class