Actualiser la numérotation automatiquement

Fermé
clavervba Messages postés 47 Date d'inscription vendredi 3 février 2017 Statut Membre Dernière intervention 7 mars 2017 - Modifié par pijaku le 17/02/2017 à 12:04
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 22 févr. 2017 à 14:46
Bonjour,

j'ai écrit une macro afin de réaliser un formulaire qui numérote les lignes.
mais lorsque je supprime une ligne, je veux pouvoir actualiser la numérotation, ci-dessous le code :

Private Sub validation_Click()
  'creation du bouton pour valider les écritures
 i = 1
 Do While Cells(i, 1) <> ""
 Cells(i, 1).Offset(1, 1).Select
 i = i + 1
 Loop

ActiveCell.Offset(0, 0).Value = UserForm1.nom.Value
 ActiveCell.Offset(0, 1).Value = UserForm1.prenom.Value
 ActiveCell.Offset(0, 2).Value = UserForm1.TextBox3.Value
 ActiveCell.Offset(0, 3).Value = UserForm1.TextBox4.Value
 ActiveCell.Offset(0, 4).Value = UserForm1.ComboBox1.Value
 ActiveCell.Offset(0, 5).Value = UserForm1.ComboBox2.Value
 'creation de numerotage de ID
 If ActiveCell.Offset(-1, -1).Value = "ID" Then
 ActiveCell.Offset(0, -1).Value = 1
 'ID de la deuxieme colonne
 Else
 ActiveCell.Offset(0, -1).Value = ActiveCell.Offset(-1, -1).Value + 1
  End If
 End Sub

PS: j'ai également écrit un code pour supprimer une ligne du formulaire.


palpevba

10 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
Modifié par ThauTheme le 16/02/2017 à 15:39
Bonjour Claver, bonjour le forum,

Essaie comme ça :
Private Sub validation_Click()
Dim O As Worksheet 'décalre la variable O (Onglet)
Dim DL As Long 'décalre la variable DL (Dernière Ligne)

Set O = Worksheets("Feuil1") 'à adapter à ton cas
DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet O
O.Cells(DL + 1, 2).Value = Me.nom.Value 'renvoie la valeur du contrôle dans la ligne DL+1, colonne 2
O.Cells(DL + 1, 3).Value = Me.prenom.Value 'renvoie la valeur du contrôle dans la ligne DL+1, colonne 3
O.Cells(DL + 1, 4).Value = Me.TextBox3.Value 'renvoie la valeur du contrôle dans la ligne DL+1, colonne 4
O.Cells(DL + 1, 5).Value = Me.TextBox4.Value 'renvoie la valeur du contrôle dans la ligne DL+1, colonne 5
O.Cells(DL + 1, 6).Value = Me.ComboBox1.Value 'renvoie la valeur du contrôle dans la ligne DL+1, colonne 6
O.Cells(DL + 1, 7).Value = Me.ComboBox2.Value 'renvoie la valeur du contrôle dans la ligne DL+1, colonne 7

'cette partie permet de renuméroter les lignes dans la colonne A
O.Range("A2") = 1 'commence la numérotation en A2
'numérote par pas de 1 juaqu'a la dernière ligne DL
Range("A2").DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
        Step:=1, Stop:=DL, Trend:=False
Unload Me 'vide et ferme l'UserForm en cours
End Sub

À plus,
ThauTheme
0
clavervba Messages postés 47 Date d'inscription vendredi 3 février 2017 Statut Membre Dernière intervention 7 mars 2017
17 févr. 2017 à 09:40
Bonjour ThauTheme,
bonjour forum,

merci encore pour le temps que tu m'as accordé pour avancer dans mon travail.
le code que tu as eu a écrire fonctionne, mais il n'actualise pas la numérotation de suite lorsque je supprime une ligne.
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
17 févr. 2017 à 09:50
Re,

Ben oui... C'est plus que normal ! Ici c'est le code de validation !
Il te faut copier la dernière partie (que je t'ai signalée) dans le code de suppression de ligne...
0
clavervba Messages postés 47 Date d'inscription vendredi 3 février 2017 Statut Membre Dernière intervention 7 mars 2017
17 févr. 2017 à 12:53
voici mon code de suppression:

Private Sub supprimer_Click()

Dim i As Integer
Dim SUPPRESSION As String

SUPPRESSION = InputBox("veuillez entrer l'id à supprimer", "suppression de l'inscription")
With Sheets("inscription")
For i = .Range("A" & .Rows.Count).End(xlUp).Row To 1 Step -1
If .Range("A" & i).Value = SUPPRESSION Then
Rows(i).Delete

O.Range("A2") = 1 'commence la numérotation en A2
Range("A2").DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
Step:=1, Stop:=DL, Trend:=False

End If
Next i

End With

End Sub

mais il a une erreur, mais parfois in passe mais ne numérote pas automatiquement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
17 févr. 2017 à 14:48
Re,

1- Tu n'as pas défini la variable DL !
2- Tu n'as pas défini la variable O !
Forcément, ton code va planter...
3- Évite les boucles inutiles et longues !
4- Avec ton Inputbox si tu fais Annuler ou ne renseigne pas, la macro continue !
Le voici modifié avec la méthode Find à la place de la boucle :

Private Sub supprimer_Click()
Dim S As Variant 'déclare la variable S (Suppression)
Dim R As Range 'décalre la variable R (Recherche)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)

'définit la variable S
S = Application.InputBox("Veuillez entrer l'ID à supprimer.", "SUPPRESSION DE L'INSCRIPTION", Type:=2)
If S = False Or S = "" Then Exit Sub 'si bouton "Annuler" ou si S est non renseignée, sort de la procédure
With Sheets("inscription") 'prend en compte l'onglet "inscription"
    Set R = .Columns(1).Find(S, , xlValues, xlWhole) 'définit la recherche R (recherche S dans la colonne 1 de l'onglet pris en compte
    'si il existe au moins une occurrence trouvée, supprime la ligne de la première occurrence trouvée
    If Not R Is Nothing Then .Rows(R.Row).Delete
    DL = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet pris en compte
.Range("A2") = 1 'commence la numérotation en A2
'numérote par pas de 1 juaqu'à la dernière ligne DL
.Range("A2").DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
   Step:=1, Stop:=DL, Trend:=False
End With 'fin de la prose en compte de l'onglet "inscription"
End Sub

0
clavervba Messages postés 47 Date d'inscription vendredi 3 février 2017 Statut Membre Dernière intervention 7 mars 2017
17 févr. 2017 à 15:47
Je suis daccrord avec ta remarque 3, on me le dit souvent.
mais ta macro le souci est que elle supprime pas la numérotation. c'est a dire la colonne A n'es pas prise en compte.
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
Modifié par ThauTheme le 17/02/2017 à 16:35
Re,

Si tu relis le code, tu verras qu'il supprime la ligne entière. Par conséquent, la cellule en colonne A de cette ligne qui contient le numéro... Ensuite il refait toute la numérotation.
Donc si tu supprimes l'ID correspondant au numéro 12 par exemple, la ligne contenant 12 en colonne A est supprimée mais la macro renumérote l'ensemble et l'ancienne ligne contenant 13 devient la ligne contenant 12, etc. Ça donne l'impression que le ligne contenant 12 n'a pas été supprimée. Et pourtant si !...
Fait tourner le code pas à pas (place le curseur dans n'importe quelle ligne du code + touche [F8] dans l'Éditeur Visial Bacic, VBE ) et contrôle en alternant entre l'onglet Excel et VBE. Sinon quel intérêt de renuméroter ?!...
À plus,
ThauTheme
0
clavervba Messages postés 47 Date d'inscription vendredi 3 février 2017 Statut Membre Dernière intervention 7 mars 2017
20 févr. 2017 à 14:35
bonjour ThauTheme,
il supprime la ligne, mais le souci est qu'il remonte les noms.
c'est a dire celui enregistré sur le numéro 12, lorsque l'on supprime la ligne 11, donc le nom se trouvons sur la ligne 12 viens a la ligne 11.
veux tu que je t'envoi le fichier afin que tu puisse vérifier s'il te plait ?
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160 > clavervba Messages postés 47 Date d'inscription vendredi 3 février 2017 Statut Membre Dernière intervention 7 mars 2017
Modifié par ThauTheme le 20/02/2017 à 15:46
Re,

Oui envoie le fichier avec un exemple avant /après parce que là j'avoue que je ne comprend plus... Tu voulais quoi toi, laisser la ligne vide ?...
0
clavervba Messages postés 47 Date d'inscription vendredi 3 février 2017 Statut Membre Dernière intervention 7 mars 2017 > ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022
20 févr. 2017 à 16:00
voici le fichier :
https://www.cjoint.com/c/GBuo7wjWgSN

je veux qu'il supprime toute la ligne et non la remplace.
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
20 févr. 2017 à 16:38
Re,

Visiblement tu confonds Supprimer et Effacer. Avec Excel, supprimer une ligne fait remonter toutes celles en-dessous. Effacer, efface le contenu des cellules de la ligne et la laisse vierge.
Si j'ai bien compris tu veux effacer mais laisser le numéro. C'est ça ? Je t'ai demandé un exemple avec Avant/Après pour être sûr de ce que tu veux...

0
clavervba Messages postés 47 Date d'inscription vendredi 3 février 2017 Statut Membre Dernière intervention 7 mars 2017
21 févr. 2017 à 09:24
bonjour,

un exemple:

1- alain
2- Paul
3- Thierry

et lorsque l'on efface la ligne 2, je voudrais que cela donne :
1- alain
2- Thierry
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160 > clavervba Messages postés 47 Date d'inscription vendredi 3 février 2017 Statut Membre Dernière intervention 7 mars 2017
21 févr. 2017 à 23:17
Bonsoir,

Il me semble que c'est exactement ce que fait le code proposé. Là il est tard, je reteste demain et confirme ou corrige...
0
clavervba Messages postés 47 Date d'inscription vendredi 3 février 2017 Statut Membre Dernière intervention 7 mars 2017 > ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022
22 févr. 2017 à 10:23
OK
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
Modifié par ThauTheme le 22/02/2017 à 11:35
Re,

C'est bien ce que je pensais. Voici le fichier :
https://www.cjoint.com/c/GBwkEXFioRc
J'ai commencé par supprimer les numéros en trop et modifié la macro pour pas quelle ne numérote pas une ligne en plus.

Et là, voici un PDF montrant avant et après comme je te l'ai réclamé maintes fois et que tu n'as jamais daigné fournir. C'est quand même un comble...
https://www.cjoint.com/c/GBwkIw4083c
À plus,
ThauTheme
0
clavervba Messages postés 47 Date d'inscription vendredi 3 février 2017 Statut Membre Dernière intervention 7 mars 2017
22 févr. 2017 à 14:10
mais dit tu permet que je te demande encore un petit code.
je suis entrain de créer un code pour se connecter avec un mot de passe. Mais je sais pas pourquoi il ne marche pas
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160 > clavervba Messages postés 47 Date d'inscription vendredi 3 février 2017 Statut Membre Dernière intervention 7 mars 2017
22 févr. 2017 à 14:46
Re,

Si tu es disposé à fournir les explications que je pourrai éventuellement te demander pas de problème...
0
clavervba Messages postés 47 Date d'inscription vendredi 3 février 2017 Statut Membre Dernière intervention 7 mars 2017
22 févr. 2017 à 14:08
bonjour,
super. merci encore pour tous le temps que tu m'as accordé
0