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 :

Incrementation sur lettres


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Ingénieur génie industriel
    Inscrit en
    Novembre 2016
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur génie industriel

    Informations forums :
    Inscription : Novembre 2016
    Messages : 88
    Par défaut Incrementation sur lettres
    Bonjour à tous,

    Le code ci-dessous permet d'incrementer les indices or la modification ne se fait pas sur Worksheets("courrier").Range("N6") mais bien sur cell1.Value quelqu'un saurait comment palier cela ?

    Merci d'avance !

    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
    21
    22
    23
    24
    25
    26
    For Each cell1 In Worksheets("Data").Range("R7:R" & Derl1)
    If Worksheets("courrier").Range("N6").Value <> "" And Worksheets("courrier").Range("J6").Value <> "" Then
    z = Worksheets("courrier").Range("N6")
    If Len(z) = 1 And z <> Chr(90) Then
       d = Chr(Asc(z) + 1)
    ElseIf Len(z) = 1 And z = Chr(90) Then
       d = "AA"
    ElseIf Len(z) = 2 And z <> "ZZ" Then
       d = RAP(URAP(z) + 1)
    Else
       d = ""
    End If
    If cell1.Offset(0, -1).Value = Worksheets("courrier").Range("J6").Value Then
    z = d
    cell1.Value = z
    cell1.Offset(0, -2).Value = "Envoyé"
     
    End If
    Else
    If cell1.Offset(0, -2).Value = "Programmé" Then
    cell1.Value = "A"
    cell1.Offset(0, -2).Value = "Envoyé"
    Worksheets("courrier").Range("N6").Value = "A"
    End If
    End If
    Next
    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
     
    Function RAP(ByVal x%) As String
    Dim i&, j&, k&
    x = x - 1
    i = Int(x / 676)
    j = i * 26
    k = Int((x - j) / 26)
    RAP = Chr$(65 + k) & Chr$(65 + x - k * 26)
    End Function
     
    Function URAP(z$) As Integer
    Dim j&, k%
    j = (Asc(Mid(z, 1, 1)) - 65) * 26
    k = (Asc(Right(z, 1)) - 65)
    URAP = j + k + 1
    End Function

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    tout se passe à la ligne 15 de la première procédure que tu as montré


    mais comprends-tu au moins ce que font toutes ses lignes de code ?

  3. #3
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut Incrementation sur lettres
    je ne voir pas comment est lancé le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each cell1 In Worksheets("Data").Range("R7:R" & Derl1)
    et comment est renseigné le Derl1

    donc, je coince.

  4. #4
    Membre confirmé
    Femme Profil pro
    Ingénieur génie industriel
    Inscrit en
    Novembre 2016
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur génie industriel

    Informations forums :
    Inscription : Novembre 2016
    Messages : 88
    Par défaut
    Pour la première partie oui puisque j'ai adapté le code à ma situation ou du moins tenté d'adapter.

    j'ai bien compris que le problème venait de la ligne 15 mais en essayant d'autres combinaisons (ordre etc..) il y a des erreurs qui se génèrent (des valeurs vont se trouver incrémentées 2 fois ou plus)

    Sinon très honnêtement je n'ai pas compris l'utilisation des fonctions, j'imagine que c'est pour incrémenter au delà de ZZ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Derl1 = Worksheets("data").Cells(Rows.Count, 1).End(xlUp).Row
    Faute de frappe il s'agit de Worksheets("Data").Range("R2:R" & Derl1) c'est sur cette colonne (sous condition) et sur la cellule Worksheets("courrier").Range("N6") que je souhaite faire apparaître l'incrémentation

    La modification se fait lorsque je confirme l'envoie d'un mail

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Ok

    donc regarde bien la ligne 23 de cette première procédure, puisque c'est toi qui l'a adaptée

    c'est cette ligne qui écrit quelque chose dans ta cellule N6 de la feuille courrier

    Tu lui demandes d'écrire quoi ? Une variable ? Un mot précis ? J'espère que cette indication te fait comprendre ce qui ne va pas, et comment en t'appuyant de cette fameuse ligne 15 tu peux t'en sortir

  6. #6
    Membre confirmé
    Femme Profil pro
    Ingénieur génie industriel
    Inscrit en
    Novembre 2016
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur génie industriel

    Informations forums :
    Inscription : Novembre 2016
    Messages : 88
    Par défaut
    Merci mais je ne rencontre pas de problème pour la deuxième condition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    If cell1.Offset(0, -2).Value = "Programmé" Then
    cell1.Value = "A"
    cell1.Offset(0, -2).Value = "Envoyé"
    Worksheets("courrier").Range("N6").Value = "A"
    qui correspond à une cellule N6 précédemment vide

    La condition qui me pose problème est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If cell1.Offset(0, -1).Value = Worksheets("courrier").Range("J6").Value Then
    z = d
    cell1.Value = z
    cell1.Offset(0, -2).Value = "Envoyé"
    End If
    Et je ne vois malheureusement pas comment faire la solution cell1.Value = d m'incrémente plusieurs fois certaines valeurs

  7. #7
    Membre confirmé
    Femme Profil pro
    Ingénieur génie industriel
    Inscrit en
    Novembre 2016
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur génie industriel

    Informations forums :
    Inscription : Novembre 2016
    Messages : 88
    Par défaut
    J'ai trouvé la solution, problème d'agencement et d'ordre

    Merci à tous et bonne journé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
    21
    22
    23
    24
    25
    26
    27
    28
    If Worksheets("courrier").Range("N6").Value <> "" And Worksheets("courrier").Range("J6").Value <> "" Then
    z = Worksheets("courrier").Range("N6")
    If Len(z) = 1 And z <> Chr(90) Then
        d = Chr(Asc(z) + 1)
    ElseIf Len(z) = 1 And z = Chr(90) Then
        d = "AA"
    ElseIf Len(z) = 2 And z <> "ZZ" Then
        d = RAP(URAP(z) + 1)
    Else
        d = ""
    End If
    y = d
    End If
     
    For Each cell1 In Worksheets("Data").Range("R7:R" & Derl1)
    If cell1.Offset(0, -1).Value = Worksheets("courrier").Range("J6").Value Then
    cell1.Value = y
    Worksheets("courrier").Range("N6") = y
    cell1.Offset(0, -2).Value = "Envoyé"
    End If
    If cell1.Offset(0, -2).Value = "Programmé" And _
    Worksheets("courrier").Range("N6").Value = "" And _
    Worksheets("courrier").Range("J6").Value = "" Then
    cell1.Value = "A"
    cell1.Offset(0, -2).Value = "Envoyé"
    Worksheets("courrier").Range("N6").Value = "A"
    End If
    Next

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    j'ai rien compris à ta demandes! mais ça c'est rigolo regarde!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub SuiteTxt(ByRef v, Optional pos As Integer = 0)
    t = Space(255 - Len(v)) & v
    If Trim(Mid(t, 255 - pos, 1)) = "" Then Mid(t, 255 - pos, 1) = "A": v = Trim(t): Exit Sub
    If Trim(Mid(t, 255 - pos, 1)) = "Z" Then Mid(t, 255 - pos, 1) = "A": v = Trim(t): SuiteTxt v, pos + 1: Exit Sub
     Mid(t, 255 - pos, 1) = Chr(Asc(Mid(t, 255 - pos, 1)) + 1): v = Trim(t)
    End Sub
    Sub test()
    Dim v As String
    v = "ABCD"
    For i = 1 To 100
     SuiteTxt v
     Next
     Debug.Print v
    End Sub
    Dernière modification par Invité ; 15/02/2017 à 20h54.

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

Discussions similaires

  1. Auto Increment sur champs numérique
    Par Sami Xite dans le forum Access
    Réponses: 19
    Dernier message: 09/02/2007, 16h40
  2. Faire un controle sur lettre
    Par zaiane dans le forum Langage
    Réponses: 10
    Dernier message: 21/06/2006, 02h02
  3. Incrementation sur un shell
    Par amadoulamine1 dans le forum Linux
    Réponses: 4
    Dernier message: 21/11/2005, 08h57
  4. [debutant]Auto incrementation sur sql-server 2000
    Par syl2095 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 18/11/2004, 18h00
  5. Pb d'auto-incrément sur une table v7
    Par Nivux dans le forum Paradox
    Réponses: 9
    Dernier message: 26/12/2002, 12h05

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