IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Excel macro incrémentation identifiation texte + numéro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2022
    Messages : 2
    Par défaut Excel macro incrémentation identifiation texte + numéro
    Hello Hello,

    Je débute sur VBA, j'essaie de créer une macro pour identifier automatiquement des taches dans une liste d'action:
    colonne A = catégorie d'action (5 phases différentes)
    et je veux pouvoir insérer des nouvelles actions qui se numérotent automatiquement en 1,2,3 etc

    J'ai trouvé un exemple de fichier sur lequel ça fonctionne avec ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Range, c As Range, s As String, n As Integer, m As Integer
      If Not Intersect(Target, Columns("B")) Is Nothing And Target.Count = 1 Then
        s = Left(UCase(Target.Value), 1)
        If s = "L" Or s = "B" Then
          Set r = Range("B1", Cells(Rows.Count, "B").End(xlUp))
          For Each c In r.Cells
            n = Val(Replace(c.Value, s, "0"))
            If n > m Then m = n
          Next c
          Application.EnableEvents = False
          Target.Value = s & Format(m + 1, "000")
          Application.EnableEvents = True
        End If
      End If
    End Sub
    Je l'ai adapté à mes besoins en mettant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Range, c As Range, s As String, n As Integer, m As Integer
      If Not Intersect(Target, Columns("A")) Is Nothing And Target.Count = 1 Then
        s = Left(UCase(Target.Value), 1)
        If s = "compounding" Or s = "filling" Or s = "IV" Or s = "Transversal" Or s = "WHS avant formu" Then
          Set r = Range("A1", Cells(Rows.Count, "A").End(xlUp))
          For Each c In r.Cells
            n = Val(Replace(c.Value, s, "0"))
            If n > m Then m = n
          Next c
          Application.EnableEvents = False
          Target.Value = s & Format(m + 1, "000")
          Application.EnableEvents = True
        End If
      End If
    End Sub
    Mais quand j'insère ce code via VBA dans excel, ça n'apparaît pas dans mes macros et le système détecte une erreur sur la ligne:
    If Not Intersect(Target, Columns("A")) Is Nothing And Target.Count = 1 Then

    Si quelqu'un peut m'éclairer SVP

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 440
    Par défaut
    Bonjour,

    Une macro du type Worksheet_...() est une macro qui doit se trouver au niveau de la feuille (worksheet) concernée, et pas dans un module ordinaire. C'est ce qui provoque l'erreur au niveau de la ligne où Target est demandé.

    Une façon de répondre à votre problème est de mettre cette macro dans le code de la feuille concernée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Option Explicit
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim r As Range, c As Range, s As String, n As Integer, m As Integer
        If Not Intersect(Target, Columns("A")) Is Nothing And Target.Count = 1 Then
            s = Target.Value
            If InStr("compounding;filling;IV;Transversal;WHS avant formu", s) > 0 Then
                Set r = Range("A1", Cells(Rows.Count, "A").End(xlUp))
                For Each c In r.Cells
                    n = Val(Replace(c.Value, s, ""))
                    If n > m Then m = n
                Next c
                Application.EnableEvents = False
                Target.Value = s & Format(m + 1, " 000")
                Application.EnableEvents = True
            Else
                MsgBox "Opération non numérotée", , "Pour info"
            End If
        End If
    End Sub
    Mais l'essentiel est de vraiment comprendre ce que fait chaque instruction.

    Cordialement.
    Fichiers attachés Fichiers attachés

  3. #3
    Candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2022
    Messages : 2
    Par défaut Résolu
    ça fonctionne ! Merci EricDgn du code et de l'explication

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/01/2014, 11h01
  2. [WD-2010] Identifier le numéro de ligne contenant un texte
    Par agangers dans le forum VBA Word
    Réponses: 3
    Dernier message: 08/08/2011, 20h55
  3. [WD-2003] Macro cherchant du text ss Excel pour copie dans word
    Par yannick113 dans le forum VBA Word
    Réponses: 0
    Dernier message: 21/12/2010, 09h53
  4. Macro import du texte Word vers Excel
    Par Bernard6773 dans le forum VBA Word
    Réponses: 6
    Dernier message: 05/09/2007, 10h42
  5. [EXCEL MACRO] Comment automatiser un texte?
    Par PAULOM dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/03/2006, 23h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo