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 :

Numéro de compte alphanumérique [XL-MAC 2011]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2013
    Messages : 9
    Points : 16
    Points
    16
    Par défaut Numéro de compte alphanumérique
    Bonjour à tous,
    ayant Excel depuis la version 1.1, j'ai développé depuis de nombreuses années un programme de Facturation/Devis/Comptabilité d'abord en macro4.0 puis sous VBA. Mon travail est très empirique (Genre usine à gaz), mais fonctionne.
    Au fur et à mesure, beaucoup avec vos aides directes ou indirectes (j'en profite pour remercier les génies de VBA), Je le simplifie et progresse .
    J'ai un problème avec la démarches automatique de création de comptes Alphanumériques.
    En compta, compte client Mr Perrault = 41per00 s'il n'y avait pas de "per.." avant lui . Sinon, s'il n'y en a qu' un, 41per01 puisque le suffixe 00 est pris.(j'espère être suffisamment explicite?).
    J'ai donc une Base de données Plan comptable qui extrait les fiches correspondant a 41per! après vérifications un ou plusieurs, je récupère le nouveau compte(ça, je sais faire). le problème est que si j'ai détruit des fiches pour diverses raisons, je peut avoir 41per00; 41per01; 41per03.... comment faire pour trouver l'absence de 41per02 et stocker cette nouvelle imputation dans une variable par exemple avec la valeur 41per02.
    En sachant que ma première cellule d'extraction est en H2 avec une zone d'extraction vers le bas, indéfinie bien sur !
    J'espère avoir été suffisamment clair, sinon je suis à votre disposition pour tous renseignements complémentaires.
    J'espère ne pas m'être trompé d'endroit pour mon message
    Merci D'avance et bonne journée à vous.

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Je n'ai pas de Mac mais ça pourrait être une piste pour toi. La recherche porte sur les lettres "per" pour l'exemple, pour les autres noms, il faut probablement créer un tableau avec ces différentes lettres et boucler dessus :
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    Sub Test()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim Tbl() As Integer
        Dim I As Long
        Dim J As Long
     
        'défini la plage en colonne H de la feuille "Feuil1", à adapter...
        With Worksheets("Feuil1")
     
            Set Plage = .Range(.Cells(2, 8), .Cells(.Rows.Count, 8).End(xlUp))
     
        End With
     
        'parcour la plage à la recherche des cellules contenant les lettres "per"
        'et récupère le suffixe dans un tableau
        For Each Cel In Plage
     
            If InStr(Cel.Value, "per") <> 0 Then
     
                I = I + 1
                ReDim Preserve Tbl(1 To I)
     
                Tbl(I) = Split(Cel.Value, "per")(1)
     
            End If
     
        Next Cel
     
        'effectue un tri croissant
        Tri Tbl
     
        'indique les suffixes manquant
        For I = 1 To Tbl(UBound(Tbl))
     
            J = J + 1
     
            If Tbl(J) <> I Then
     
                MsgBox I & " est abscent !"
                J = J - 1
     
            End If
     
        Next I
     
    End Sub
     
    Sub Tri(Tbl() As Integer)
     
    Dim Tempo
    Dim I As Integer
    Dim J As Integer
     
        For I = 1 To UBound(Tbl)
     
            For J = 1 To UBound(Tbl) - 1
     
            '< croissant, > décroissant
                If Tbl(I) < Tbl(J) Then
     
                    Tempo = Tbl(I)
                    Tbl(I) = Tbl(J)
                    Tbl(J) = Tempo
     
                End If
     
            Next J
     
        Next I
     
    End Sub
    Hervé.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2013
    Messages : 9
    Points : 16
    Points
    16
    Par défaut Réponse à Thèze
    Bonjour,
    merci de votre intervention. Ca m'a fait déjà avancer.
    Pour affiner ma demande, mes numéros de compte fournisseurs et clients sont dans une base de données Excel, rangés par ordre alphabétiques, j'extrait donc sur une zone d'extraction suivant le numéro correspondant au nom entré dans un textBox (40bal00 pour fournisseurs ou 41ter00 pour clients par exemple).Il faut donc que je détermine: soit pas de fiche auquel cas j'attribue la valeur 40bal00, soit il y en a un certain nombre. la j'attribue la dernière valeur majoré d'une unité. En gros je lit la première cellule avec right(Cellule,1) et je compare le résultat au chiffre du compteur . si les deux sont identiques, je continue, sinon j'ai la valeur pas encore utilisé. jusque la tout va bien. Mais du fait qu'il y a 00 puis 01........10; 11 etc. Je pense qu'il faudrait imbriquer deux boucles identiques à celle que vous m'avez proposé. une première qui vérifierai les dizaines avec mid(Cellule,6,1) et une intérieure qui vérifierai les unités. Pour le reste je sais faire. mais en imbriquant les deux boucles, j'ai des messages d'erreur.
    Si je me suis mal exprimé, c'est comme si vous demandez un nouveau Dossier(dossier sans titre) puis un autre (DST2), (DST3) etc. Vous mettez à la corbeille DST2, et si vous demandez un nouveau dossier il prendra automatiquement la Valeur 2. C'est ce qu'il me faudrait
    Merci d'avance, je sent que je progresse.
    à tous
    Patrick

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2013
    Messages : 9
    Points : 16
    Points
    16
    Par défaut Fin
    Avec mes remerciements, en fait je cherchais une imbrication d'une double boucle, alors qu'une seule suffisait amplement, je n'ai fait qu'une adaptation à mon document.
    Fabuleux !!! ça m'ouvre des perspectives de simplification des feuilles extra.
    Merci
    Patrick

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

Discussions similaires

  1. [X3 v6.5] Changer numéro de compte d'écritures
    Par Invité dans le forum SAGE
    Réponses: 3
    Dernier message: 08/06/2015, 16h47
  2. Réponses: 5
    Dernier message: 25/10/2013, 11h51
  3. [XL-2007] Regrouper des comptes selon des numéros
    Par PeaceMaker dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/07/2012, 12h03
  4. numéro auto incrément d'un compte bancaire avec c# xml
    Par manidis dans le forum Windows Forms
    Réponses: 6
    Dernier message: 24/03/2011, 14h18
  5. [AC-2000] Numéro auto Alphanumérique
    Par francois78 dans le forum Modélisation
    Réponses: 1
    Dernier message: 14/05/2009, 02h56

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