Actualiser la numérotation automatiquement
clavervba
Messages postés
47
Date d'inscription
Statut
Membre
Dernière intervention
-
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
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 :
PS: j'ai également écrit un code pour supprimer une ligne du formulaire.
palpevba
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
A voir également:
- Le document à télécharger comporte 19 pages. en numérotant automatiquement chaque page de ce document, on constate que sa numérotation ne commence pas à 1. quel nom d’animal apparaît sur la page avec le numéro 30 ?
- Comment supprimer une page sur word - Guide
- Comment reduire la taille d'un document - Guide
- Word numéro de page 1/2 - Guide
- Quelles sont les 2 orientations possibles d'une page d’un document numérique ? - Guide
- Télécharger clavier arabe - Télécharger - Divers Web & Internet
10 réponses
Bonjour Claver, bonjour le forum,
Essaie comme ça :
À plus,
ThauTheme
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
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.
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.
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...
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...
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 :
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
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.
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.
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
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
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 ?
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 ?
voici le fichier :
https://www.cjoint.com/c/GBuo7wjWgSN
je veux qu'il supprime toute la ligne et non la remplace.
https://www.cjoint.com/c/GBuo7wjWgSN
je veux qu'il supprime toute la ligne et non la remplace.
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...
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...
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
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