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 :

Lettrage Numero facture


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2014
    Messages : 18
    Par défaut Lettrage Numero facture
    bonjour
    j'ai besoin d'identifier sur deux colonnes les valeurs identiques et de les "flaguer" par une lettre différente un peu comme pour un lettrage comptable.
    dans la colonne "c" j'ai des numéros de factures, dans la colonne "d" j'ai du texte plus ces numéros de factures concaténés.
    l'idée c'est de sélectionner la première cellule de C et de rechercher ce "texte" dans "D".
    si rien n'est trouvé passer à la suivante.
    Si une correspondance est trouvé, il faudrait indiquer en face de chaque cellule dans une troisième colonne une lettre identique aux valeurs recherchées et trouvées.
    puis passer à la cellule suivante etc ...
    exemple dans la PJ où surligné en jaune on voit les valeurs communes marqués en "a", en bleu idem marqué en "b" et ainsi de suite.
    merci de votre aide

    Classeur2.xlsx

  2. #2
    Invité
    Invité(e)
    Par défaut Bonjour,
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Sub test()
    Dim R As Range
    Dim L As Long
    Dim i As Long
    Dim Occurrence As Long
    Dim trouve As Boolean
    Set R = ActiveSheet.UsedRange
    Occurrence = 0
    For i = 2 To R.Rows.Count
        L = 1
    trouve = False
        Do While L <> 0
            L = SerchXls(ActiveSheet.Range("d:d"), ActiveSheet.Range("d" & L), R(i, 3), False)
            If L > 0 Then
            If trouve = False Then Occurrence = Occurrence + 1
            trouve = True
            R(i, 5) = CalculOccurence(Occurrence)
            R(L, 6) = R(i, 5)
            End If
        Loop
    Next
    End Sub
     
    Function CalculOccurence(Occurrence) As String
    Dim t As String
    Dim C As Integer
    Dim ICH As Integer
    C = Occurrence
    t = Space(Occurrence)
    ICH = 0
    For i = 0 To Occurrence - 1
        If Mid(t, C, 1) = "Z" Then
            Mid(t, C, 1) = "A": C = C - 1
            ICH = 0
       End If
     
           Mid(t, C, 1) = Chr(65 + ICH)
           ICH = ICH + 1
     
     
    Next
    CalculOccurence = Trim(t)
    End Function
     
     
    Function SerchXls(MyRange As Range, MyCellule As Range, strRecherche, EntierCell As Boolean) As Long '
    On Error Resume Next
    SerchXls = 0
    Dim myxLookAt As Integer
    If EntierCell = True Then myxLookAt = xlWhole Else myxLookAt = xlPart
       SerchXls = MyRange.Cells.Find(What:=strRecherche, After:=MyCellule, LookIn:=xlFormulas, LookAt _
            :=myxLookAt, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, MatchByte:=False).Row
      If SerchXls <= MyCellule.Row Then SerchXls = 0
    End Function

  3. #3
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2014
    Messages : 18
    Par défaut code
    Bonsoir Robert
    merci pour le code qui est totalement opérationnel !
    Trop TOP !!

    que se passe t il à la 27 occurrence ? après le Z ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    AA
    BA
    CA
    ZA
    AAA
    BAA
    CAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    Dernière modification par AlainTech ; 23/06/2014 à 00h32. Motif: Suppression de la citation inutile

  5. #5
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2014
    Messages : 18
    Par défaut Félicitation
    Bravo Robert
    je viens de tester avec plus de valeurs
    c'est excellentissime !!

    MERCI MERCI
    Tu mérite bien le nom d'expert !!

  6. #6
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2014
    Messages : 18
    Par défaut plantage
    Sur une liste de 500 lignes
    Le calcul Excel semble s'affoler puis Excel plante...

  7. #7
    Invité
    Invité(e)
    Par défaut Bonjour,
    Citation Envoyé par roadrunner34 Voir le message
    Sur une liste de 500 lignes
    Le calcul Excel semble s'affoler puis Excel plante...
    je suis allé très loin !
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Sub test()
    Dim R As Range
    Dim L As Long
    Dim i As Long
    Dim Occurrence As Long
    Dim trouve As Boolean
    Set R = ActiveSheet.UsedRange
    Occurrence = 0
    For i = 2 To R.Rows.Count
        L = 1
    trouve = False
        If Trim("" & R(i, 3)) <> "" Then
            Do While L <> 0
                L = SerchXls(ActiveSheet.Range("d:d"), ActiveSheet.Range("d" & L), R(i, 3), False)
                If L > 0 Then
                If trouve = False Then Occurrence = Occurrence + 1
                trouve = True
                R(i, 5) = CalculOccurence(Occurrence)
                R(L, 6) = R(i, 5)
                End If
            Loop
        End If
    Next
    MsgBox "Fin"
    End Sub
     
    Function CalculOccurence(Occurrence) As String
    Dim t As String
    Dim C As Integer
    Dim ICH As Integer
    C = Occurrence
    t = Space(Occurrence)
    ICH = 0
    For i = 0 To Occurrence - 1
        If Mid(t, C, 1) = "Z" Then
            Mid(t, C, 1) = "A": C = C - 1
            ICH = 0
       End If
     
           Mid(t, C, 1) = Chr(65 + ICH)
           ICH = ICH + 1
     
     
    Next
    CalculOccurence = Trim(t)
    End Function
     
     
    Function SerchXls(MyRange As Range, MyCellule As Range, strRecherche, EntierCell As Boolean) As Long '
    On Error Resume Next
    SerchXls = 0
    Dim myxLookAt As Integer
    If EntierCell = True Then myxLookAt = xlWhole Else myxLookAt = xlPart
       SerchXls = MyRange.Cells.Find(What:=strRecherche, After:=MyCellule, LookIn:=xlFormulas, LookAt _
            :=myxLookAt, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, MatchByte:=False).Row
      If SerchXls <= MyCellule.Row Then SerchXls = 0
    End Function
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. numero de facture soit regulier
    Par midosd dans le forum VBA Access
    Réponses: 6
    Dernier message: 24/05/2009, 10h05
  2. Réponses: 3
    Dernier message: 17/02/2009, 13h09
  3. Gestion d'un numero de facture
    Par skunkies dans le forum Windows Forms
    Réponses: 6
    Dernier message: 16/11/2008, 07h07
  4. Numero De Facture Auto Mois Annee
    Par Maryloo2005 dans le forum IHM
    Réponses: 1
    Dernier message: 15/06/2007, 23h21
  5. numero de facture
    Par ines87 dans le forum Access
    Réponses: 8
    Dernier message: 23/06/2006, 10h50

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