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 :

[VBA/ADO] Incrémentation automatique de variables


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Par défaut [VBA/ADO] Incrémentation automatique de variables
    Bonjour forum,

    Suite au rollback, je repose ma question, de manière plus affinée :

    Je souhaite créer une incrémentation automatique de mes documents, qui sont de types différents.
    Les documents ont une dénomination qui est composée d'une partie fixe (lettre arbitraire), et d'une partie variable (Date et numéros pour les différencier).

    Ainsi, dans l'idée je voudrais que lorsque l'on exporte le document en PDF (BeforePrint donc?), l'on que le nombre soit conservé i+1 jusqu'à la prochaine impression. Cela fait donc appel à ADO à ce que j'en ai lu.

    J'ai essayé de retoucher le script suivant :
    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
    Sub NoDevis()
       Dim Cn As ADODB.Connection
       Dim Cd As ADODB.Command
       Dim Rst As ADODB.Recordset
       Dim CheminNoDevis As String
       Dim NomFeuille As String
       Dim NomCol As String
       Dim Cellule As String
       Dim i As Integer
     
     
     
       CheminNoDevis = "Y:\BDD\Compteur.xls"
     
       NomFeuille = [I25] 'Soit le type de document, une feuille par type de doc
     
       Set Cn = New ADODB.Connection
       ' pour Xl 2007
       Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
          "Data Source=" & CheminNoDevis & ";" & _
          "Extended Properties=""Excel 12.0;HDR=no;"""
       'Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=" & CheminNoDevis & ";" & _
          "Extended Properties=""Excel 8.0;HDR=No;"";"
     
       Set Cd = New ADODB.Command
       Cd.ActiveConnection = Cn
     
          '------------------
          Cd.CommandText = "SELECT * FROM [" & NomFeuille & "$]"
          Set Rst = New ADODB.Recordset
          Rst.Open Cd, , adOpenKeyset, adLockOptimistic
          Dim NumeroDevis As Long
          NumeroDevis = Rst.RecordCount + 1
          'MsgBox NumeroDevis
          Rst.Close
          Set Rst = Nothing
     
    '------------------------
       Dim tablo(1 To 2) As Variant
       tablo(1) = NumeroDevis
       tablo(2) = Date
     
       For i = 1 To UBound(tablo)
          Cellule = Cells(NumeroDevis, i).Address(0, 0) & ":" & Cells(NumeroDevis, i).Address(0, 0)
          Cd.CommandText = "SELECT * FROM [" & NomFeuille & "$" & Cellule & "]"
          Set Rst = New ADODB.Recordset
          Rst.Open Cd, , adOpenKeyset, adLockOptimistic
          Rst(0).Value = tablo(i)
          Rst.Update
       Next i
       Cn.Close
     
       Set Cn = Nothing
       Set Cd = Nothing
       Set Rst = Nothing
     
       [K5] = NumeroDevis
       [L5] = tablo(2)
     
    End Sub
    Il est très bien, cependant je n'arrive pas à faire revenir à 0 la valeur lorsque l'on change de mois. Quelle solution serait la meilleure, créer une nouvelle feuille ? (sachant qu'il existe déjà une feuille par type de document) Ou bien peut on décaler de deux cases l'enregistrement quand le mois change ?

    En espérant que ma question soit suffisamment claire =)

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut Pachee et le forum
    Dans un cas semblable, j'utiliserais une feuille "paramettres" avec une colonne pour le préfixe, une colonne pour le moi et une colonne pour le numéro d'ordre avec pour celui-ci une remise à 0 en changement de mois et une incrémentation à chaque création de nom.
    A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Par défaut
    Merci pour l'idée Gorfael

    J'ai cependant des problèmes au niveau de la synthaxe pour ladite remise à zero.
    Comment appeler l'enregistrement précédent pour le comparer avec la date d'aujourd'hui et ainsi programmer ladite remise à zero ?

Discussions similaires

  1. Incrémenter automatiquement des noms de variables ?
    Par Cycy19 dans le forum Langage
    Réponses: 2
    Dernier message: 29/12/2014, 10h12
  2. [VBA-E] Incrémentation automatique d'une valeur suite à l'insertion de ligne
    Par abdelghani_k dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/01/2007, 14h26
  3. [Tableaux] variable incrémentée automatiquement
    Par Mister Nono dans le forum Langage
    Réponses: 7
    Dernier message: 07/07/2006, 13h46
  4. [Débutant] Probleme d'incrémentation d'une variable
    Par sakuragikan dans le forum ASP
    Réponses: 2
    Dernier message: 25/08/2005, 13h11
  5. [ADO] requete contenant une variable ?
    Par kam dans le forum MFC
    Réponses: 9
    Dernier message: 28/04/2004, 11h08

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