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 :

implementer un code alphanumérique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 85
    Par défaut implementer un code alphanumérique
    Bonjour a tous !

    J'ai un bout de code, que voici :

    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
     
    Dim code As String
    code = Sheets("PROGRAMME").Range("D14").Text
    Dim l As Integer
    Dim myRange As Range
    Dim num As Long
    Dim dl1 As Long ' dernière ligne
    dl1 = Sheets("ORIGINALE").Range("K65536").End(xlUp).Row
    Set myRange = Sheets("ORIGINALE").Range("K" & dl1)
    num = Application.WorksheetFunction.Max(myRange) + 1
     
    Sheets("ORIGINALE").Unprotect Password:="popol"
    Sheets("ORIGINALE").Select
    l = Sheets("ORIGINALE").Range("K65000").End(xlUp).Row + 1
    With Sheets("ORIGINALE")
    .Range("K" & l) = code & num
    End With
    Sheets("ORIGINALE").Protect Password:="popol"
    Sheets("PROGRAMME").Activate
    qui devrait me servir a implémenter un code alphanumérique d'une ligne a l'autre (cellule K17 = ZZ1, cellule K18 = ZZ2, etc), mais malheureusement ce code ne marche pas dans mon projet...mais il fonctionne dans un nouveau projet vide !

    Je vous demande donc si le fait que j'ai ceci pour implémenter mes lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Ligne As Long
    Ligne = Sheets("ORIGINALE").Range("A" & Rows.Count).End(xlUp).Row + 1
    pourrais entrer en conflit avec l'autre bout de code??? sinon ou est le problème???

    Merci de le tester chez vous et de m'aider avec ceci.

    PS: je l'ai déjà dit mais je le réitère: je suis plutôt novice en vba !!

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    En toute rigueur, tu dois écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ligne = Sheets("ORIGINALE").Range("A" & Sheets("ORIGINALE").Rows.Count).End(xlUp).Row + 1
    Cordialement.

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonjour,

    Il y a plusieurs lignes dont je n'ai pas bien compris l'intérêt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim myRange As Range
    Dim num As Long
    Dim dl1 As Long ' dernière ligne
    dl1 = Sheets("ORIGINALE").Range("K65536").End(xlUp).Row
    Set myRange = Sheets("ORIGINALE").Range("K" & dl1)
    num = Application.WorksheetFunction.Max(myRange) + 1
    La valeur maximum d'une cellule, c'est la valeur de la cellule. Pourquoi chercher un maximum sur une cellule avec WorksheetFunction.Max?

    La sélection d'une feuille n'est pas nécessaire pour exécuter un code qui modifie le classeur. Donc Sheets("ORIGINALE").Select doit être inutile.

    Sinon pour ce qui est de faire une concaténation d'une cellule se trouvant en
    Feuille PROGRAMME, cellule D14, en incrémentant l'indice de la dernière concaténation qui se trouve en feuille "Originale", fin de la colonne K.

    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
    With Worksheets("ORIGINALE")
            .Unprotect Password:="popol"
     
            Dim code As String
            code = Worksheets("PROGRAMME").[D14].Value
     
            Dim dl1 As Long ' dernière ligne
            dl1 = .Range("K" & Rows.Count).End(xlUp).Row
     
            Dim num As Long
            If Len(.Range("K" & (dl1)).Value) > Len(code) Then
                num = Mid(.Range("K" & (dl1)).Value, Len(code) + 1) + 1
            Else
                num = 1
            End If
     
            .Range("K" & (dl1 + 1)).Value = code & num
     
            .Protect Password:="popol"
    End With
    Edit : Autre solution si le code ne change pas, on peut utiliser l'autofill :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            If Len(.Range("K" & (dl1)).Value) > Len(code) Then
                .Range("K" & (dl1)).AutoFill Destination:=.Range("K" & dl1 & ":K" & (dl1 + 1)), Type:=xlFillDefault
            Else
                .Range("K" & (dl1 + 1)).Value = code & 1
            End If

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 85
    Par défaut
    Salut Blue Monkey et merci pour ton code
    mais j'ai une erreur "Incompatibilité de type" sur cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     num = Mid(.Range("K" & (dl1)).Value, Len(code) + 1) + 1
    J'imagine que comme mes données sont entrées a partir de la ligne 17 et non de la ligne 1 c'est pour ca que ca ne fonctionne pas ?!?!?

    C'est malheureux car mon code "fonctionnait" jusqu'a un certain point...il ajoutais la lettre (code) inscris dans la cellule D14 de la feuille PROGRAMME ,le seul hic c'est qu'il écrivais toujours un 1 apres le code je voudrais simplement une légère modification de mon code qui fasse en sorte que le chiffre apres le code se concatène...(comme vous dites)

    et au passage, désolé du manque d'éducation mais c'est quoi Len
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Len(.Range("K" & (dl1)).Value) > Len(code) Then
    que vaut, ou représente Len ??

    Merci d'avance

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Re.

    je voudrais simplement une légère modification de mon code qui fasse en sorte que le chiffre apres le code se concatène
    Le soucis est que le code donné est premier post contient plusieurs partie dont je ne comprends pas l'utilité (voir questions précédentes).
    Et pour maintenir il est toujours préférable de partir de quelque chose d'aussi simple que possible. C'est pourquoi j'ai simplifié, tout faisant la même fonction.


    j'ai une erreur "Incompatibilité de type"
    Le message d'erreur provient probablement qu'en [K17] on a des caractères qui ne correspondent pas au format <code>+<incrément numérique>.
    Est ce qu'il est possible de vérifier le contenu de [K17]?

    Si dans la partie numérique, on a des lettres au lieu de ce qui a été présenté, il y aura une incompatibilité de type.

    J'imagine que comme mes données sont entrées a partir de la ligne 17 et non de la ligne 1 c'est pour ca que ca ne fonctionne pas
    dl1 = .Range("K" & Rows.Count).End(xlUp).Rows'occupe de retrouver le numéro de la dernière ligne non vide de la colonne K.
    Ca devrait commencer en ligne K17 si cette cellule n'est pas vide.

    Autre solution de code si le numéro de l'incrément commence toujours en ligne 17 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    With Worksheets("ORIGINALE")
            .Unprotect Password:="popol"
     
            Dim code As String
            code = Worksheets("PROGRAMME").[D14].Value
            Dim dl1 As Long ' dernière ligne
            dl1 = .Range("K" & Rows.Count).End(xlUp).Row
            If dl1 <= 16 Then dl1 = 16
            .Range("K" & (dl1 + 1)).Value = code & (dl1 - 15)
     
            .Protect Password:="popol"
    End With
    Len(<chaîne de caractère>) retourne le nombre de caractère d'une chaîne.

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 85
    Par défaut
    Tout d'abord merci de ton aide et de ta patiente !

    Premierement, a la base, toute les cellules sont vides sur cette feuille donc K17 est vide, je ne sais pas si ca peut causer l'erreur Incompatibilité

    Et secondo, oui, mes lignes se remplissent toujours depuis la ligne 17 donc j'essaie ton autre code et je te reviens la dessus

    Merci infiniement !

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

Discussions similaires

  1. Code implementation sur DSP Texas
    Par jujuv71 dans le forum Simulink
    Réponses: 0
    Dernier message: 02/02/2010, 10h28
  2. Génération de Code ID Alphanumérique
    Par the watcher dans le forum Langage
    Réponses: 16
    Dernier message: 28/08/2009, 22h37
  3. Code et implementation en C++
    Par maymay dans le forum Débuter
    Réponses: 0
    Dernier message: 08/04/2009, 20h29
  4. [javascript] générer un code de 6 caractère alphanumérique
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/09/2005, 17h03
  5. []Traduire un code barre alphanumérique en nombre
    Par iskandhar dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 21/08/2005, 21h17

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