Incrémenter code alpha numérique automatique

Bonjour à tous. Je suis débutant en VBA.

Je vous envoie un fragment de fichier de planification pour lequel je voudrais mettre le code des tâches (colonne A) sous les lignes de façon automatique car le fichier réel renferme un nombre important de lignes similaires.

Les tâches sont identifiées par les lignes dont la colonne C est vide

J'ai imaginé l'algorithme suivant:

Si la cellule CX est non vide copy la cellule AX de la même ligne et colle dans AX+1 et concaténer avec ".1"

Incrémente ensuite .2; .3; ... tant que la cellule "C" de la même ligne est vide, jusqu'à rencontrer une cellule non vide de la colonne A

Si tu rencontres une cellule non vide dans la colonne A, Copie la cellule; décale d'une ligne vers le bas, Colle et concaténer avec ".1"

Incrémente ensuite .2; .3 .... tant que la cellule "C" de la même ligne est vide, jusqu'à rencontrer une cellule non vide de la colonne A

Arrête lorsque tu rencontres la cellule qui contient "Total" .

J'ai joint le fichier initial (fichier planning) et le résultat que je souhaite avoir( fichier résultat)

J'ai commencé ceci mais la phase pour incrémenter m'est difficile car je ne sais pas indiquer comment s'arrêter si la cellule n'est pas vide et reprendre.

Sub incrémentercode()

Sheets (feuil1).Select

Dim i As Integer

Do While Not IsEmpty(Cells(i, 3))

Cells(i, 1).Select

Selection.Copy

ActiveCell.Offset(1, 0).Select

Cells(i + 1, 1).Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Cells(i + 1, 1) = Cells(i + 1, 1) & ".1"

Loop

Do While IsEmpty (Cells(i, 3))

Cells(i, 1).Select

Selection.Copy

ActiveCell.Offset(1, 0).Select

Loop

End Sub

Si quelqu'un peut m'aider je suis preneur. Merci d'avance.

Bonjour,

à tester,

Sub incrémentercode()
deb = Cells(2, 1)
For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row - 1
    n = n + 1
    If Cells(i, 1) = "" Then
        Cells(i, 1) = deb & "." & n
    Else
        deb = Cells(i, 1)
        n = 0
    End If
Next i
End Sub

Bonsoir i20100

C'est génial la macro que tu as proposée. Elle a bien marché et je te remercie pour la promptitude avec laquelle ta réaction est intervenue. C'est un véritable coup de pouce!

Seulement je souhaite que le code prenne en compte une condition supplémentaire/complémentaire avec ta gratitude et celle des autres membres.

Au fait, le code comporte l'arborescence suivante déclinées en niveau

Objectif1

Résultat1

Action 1

Activité

Tâche

Tâche

Action 2

Activité

Tâche

Tâche

....

Résultat2

Action

Activités

Tâche

Tâche

Objectif2

Les objectifs, résultats et actions ne sont pas nombreux et leurs codes sont écrits manuellement sans problèmes (prédéfinis).

_Chaque autre niveau (activité, tâche) porte un code alphanumérique (identifiant) que je souhaite réaliser automatiquement.

_Les codes sont mis dans la colonne A

_les niveaux sont dans la colonne B

_les lignes des tâches ne comportent pas de valeur dans la colonne C (on peut exploiter cette propriété pour générer leur code par une condition dans la macro)

_Les activités ont de valeur non nulle dans la colonne C, leur code est à générer dans la colonne A. Donc la ligne des activités est initialement vide en A (ce qui n'est pas le cas dans le fichier Planning que j'avais envoyé) mais pas en C

_ Les lignes des actions sont remplies pour les colonnes A et C initialement

_Pour passer d'un niveau à un autre, il faut concaténer le code du niveau supérieur avec ".1" et incrémenter vers le bas ".2" ".3" etc selon le nombre d'éléments du même niveau avant de trouver un niveau supérieur.

_Si on rencontre un niveau supérieur, on arrête l'incrémentation et on fait +1 à la partie numérique du code précédent de ce même

Au total, je voudrais de l'aide pour générer automatiquement les codes des activités et des tâches. Je suis preneur pour deux macros séparées (une pour les activités et une pour les tâches) si c'est la solution puisque la macro pour les tâches fonctionne parfaitement si on écrit les codes activités au préalable (encore merci). J'ai joint deux fichiers similaires aux précédents à ma requête.

D'avance merci à tous. Vous êtes super.

re,

à tester,

Sub incrémentercode()
Dim deb1 As String, deb2 As String, niveau As String
Dim i As Long, a As Integer, t As Integer
deb1 = Cells(5, 1)
For i = 6 To Cells(Rows.Count, 1).End(xlUp).Row - 1

    If Cells(i, 1) = "" Then
         niveau = Cells(i, "D")

         Select Case niveau
         Case "Activité":   a = a + 1
                            Cells(i, 1) = deb1 & "." & a
                            deb2 = Cells(i, 1)
                            t = 0

         Case "Tâche":      t = t + 1
                            Cells(i, 1) = deb2 & "." & t
         End Select
    Else
        deb1 = Cells(i, 1)
        a = 0
    End If

Next i
End Sub

Bonjour i20100

Encore une fois merci. ça marche mais la colonne D ne fait pas partie normalement du fichier. Je l'ai remplie juste pour expliquer l'arborescence. Je constate que tout la macro a été bâtie sur cette colonne. Est ce qu'on peut réaliser le code sans prendre appui sur cette colonne?

Encore merci pour l'appui.

re,

j'ai fais le test avec le montant de la colonne C (<> 0)

Sub incrémentercode()
Dim deb1 As String, deb2 As String, niveau As String
Dim i As Long, a As Integer, t As Integer
deb1 = Cells(5, 1)
For i = 6 To Cells(Rows.Count, 1).End(xlUp).Row - 1

    If Cells(i, 1) = "" Then
         If Cells(i, 3) <> 0 Then niveau = "Activité" Else niveau = "Tâche"

         Select Case niveau
         Case "Activité":   a = a + 1
                            Cells(i, 1) = deb1 & "." & a
                            deb2 = Cells(i, 1)
                            t = 0

         Case "Tâche":      t = t + 1
                            Cells(i, 1) = deb2 & "." & t
         End Select
    Else
        deb1 = Cells(i, 1)
        a = 0
    End If

Next i
End Sub

Cher i20100

Euréka, tu as trouvé!!! ça marche à 200%.

Infininiment merci.

Dis moi comment apprendre et exceller avec le langage VBA?

re,

Merci pour ce retour, j 'suis bien contente que tout fonctionne,

Dis moi comment apprendre et exceller avec le langage VBA?

c'est la pratique!

je pense qu'en exécutant de petite macro en mode pas à pas on voie mieux ce qui se passe,

on peut déplacer le curseur sur les variables pour voir leur valeur et ça améliore la compréhension.

Merci beaucoup IP20100 (@Isabelle?).

J'en ferai bon usage.

Rechercher des sujets similaires à "incrementer code alpha numerique automatique"