Signaler

Actualiser la numérotation automatiquement

Posez votre question clavervba 48Messages postés vendredi 3 février 2017Date d'inscription 7 mars 2017 Dernière intervention - Dernière réponse le 22 févr. 2017 à 14:46 par ThauTheme
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.


Afficher la suite 
Utile
+0
plus moins
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
Donnez votre avis
Utile
+0
plus moins
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.
Donnez votre avis
Utile
+0
plus moins
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...
Donnez votre avis
Utile
+0
plus moins
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.
Donnez votre avis
Utile
+0
plus moins
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

Donnez votre avis
Utile
+0
plus moins
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.
Donnez votre avis
Utile
+0
plus moins
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
clavervba 48Messages postés vendredi 3 février 2017Date d'inscription 7 mars 2017 Dernière intervention - 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 ?
Répondre
ThauTheme 4337Messages postés mardi 21 octobre 2014Date d'inscription 8 août 2017 Dernière intervention - 20 févr. 2017 à 15:45
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 ?...
Répondre
clavervba 48Messages postés vendredi 3 février 2017Date d'inscription 7 mars 2017 Dernière intervention - 20 févr. 2017 à 16:00
voici le fichier :
http://www.cjoint.com/c/GBuo7wjWgSN

je veux qu'il supprime toute la ligne et non la remplace.
Répondre
Donnez votre avis
Utile
+0
plus moins
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...

clavervba 48Messages postés vendredi 3 février 2017Date d'inscription 7 mars 2017 Dernière intervention - 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
Répondre
ThauTheme 4337Messages postés mardi 21 octobre 2014Date d'inscription 8 août 2017 Dernière intervention - 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...
Répondre
clavervba 48Messages postés vendredi 3 février 2017Date d'inscription 7 mars 2017 Dernière intervention - 22 févr. 2017 à 10:23
OK
Répondre
Donnez votre avis
Utile
+0
plus moins
Re,

C'est bien ce que je pensais. Voici le fichier :
http://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...
http://www.cjoint.com/c/GBwkIw4083c
À plus,
ThauTheme
clavervba 48Messages postés vendredi 3 février 2017Date d'inscription 7 mars 2017 Dernière intervention - 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
Répondre
ThauTheme 4337Messages postés mardi 21 octobre 2014Date d'inscription 8 août 2017 Dernière intervention - 22 févr. 2017 à 14:46
Re,

Si tu es disposé à fournir les explications que je pourrai éventuellement te demander pas de problème...
Répondre
Donnez votre avis
Utile
+0
plus moins
bonjour,
super. merci encore pour tous le temps que tu m'as accordé
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !