[Acess] remplir un Feild Name

remplir un Feild Name [Acess] - SQL/NoSQL - Programmation

Marsh Posté le 02-10-2006 à 11:50:18    

Bonjour à tous,
 
Je souhaite créée une table comme suit:
 
    A | B | C | D ...
    w   x    y   z
 
Sa j'y arrive :D
 
j'aimerai pouvoir crée la table vierge et avec un Formulaire lui demander de saisir une valeur début et fin
Toutes les valeurs comprise entre seront "injecter" dans A.
 
exemple valeur Saisie   5 (puis) 9
 
résultat dans la table:
 
    A | B | C | D ...
    5   x    y   z
    6
    7
    8
    9
 
jusqu'là je pense que sa doit être possible.
 
maintenant j'aimerai que "l'incrémenation" de face en BASE 7
 
cad -> ( révision math ) 0, 1, 2, 3, 4, 5, 6, 10, 11, ...
 
j'espère que vous m'avais suivie.
j'utilise acess que peu souvant et je ne serait pas faire cela si quelqu'un pourrai m'aider ?
 
je lui en remerci !
 
Cordialement,
Zorh.

Reply

Marsh Posté le 02-10-2006 à 11:50:18   

Reply

Marsh Posté le 02-10-2006 à 13:42:00    

et ben ... je vous est posé une colle ? :D

Reply

Marsh Posté le 02-10-2006 à 15:32:45    

toujour pas d'idée ? :)

Reply

Marsh Posté le 02-10-2006 à 17:08:03    

en faite, je viens de m'aperçevoir d'une chose.
 
La suite que je veux n'est en faite pas de la Base 7 !!  
 
Voici la suite:
 
01
12
23
34
45
56
60
71
82
93
...
 
Base 17 ?   :??:  
 
quelqu'un peu m'aider ?
 
merci grandement !
Zorh.


Message édité par Zorh le 02-10-2006 à 17:08:17
Reply

Marsh Posté le 02-10-2006 à 17:27:17    

Bonsoir,
j'ai trouvé cela pour toi :
 
Private Function Inverser(ByVal strChaine As System.String)  
        Dim intI As System.Int32  
        Dim strS As System.String  
        For intI = strChaine.Length - 1 To 0 Step -1  
            strS &= strChaine.Substring(intI, 1)  
        Next  
        lblResult.Text = strS  
    End Function  
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click  
        Dim intNombre, intBase, intReste, intQuotient As System.Int32  
        intNombre = CInt(txtNombre.Text)  
        intBase = CInt(txtBase.Text)  
        intQuotient = 1  
        lblResult.Text = ""  
        ' Tant que le quotient est différent de 0, le reste est affecté à chaque position du nombre converti  
        Do While intQuotient <> 0  
            intQuotient = intNombre \ intBase  
            intReste = intNombre Mod intBase  
            intNombre = intQuotient  
            ' Si le reste > 9 ( code hexadécimal et plus ), une lettre est affecté au chiffre  
            If intReste > 9 Then  
                lblResult.Text &= Chr(intReste + 55)  
            Else  
                lblResult.Text &= intReste  
            End If  
        Loop  
        ' On inverse la chaine puisque l'algorithme donne le nombre converti à l'envers  
        Inverser(lblResult.Text)  
    End Sub  
   
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click  
        Dim intNombre1, intBase1, intResult, intJ As System.Int32  
        intBase1 = CInt(txtBase1.Text)  
        ' Convertit le nombre en base X en un nombre décimal  
        For intJ = 0 To txtNombre1.Text.Length - 1 Step 1  
            If Char.IsLetter(txtNombre1.Text.Substring((txtNombre1.Text.Length - 1 - intJ), 1)) Then  
                'Si il y a une lettre, on convertit en son chiffre décimal  
                'On prend la chaîne à l'envers puisque l'ordre des puissances est inversée  
                'par rapport à la chaîne de caractères  
                intResult += (Asc(txtNombre1.Text.Substring((txtNombre1.Text.Length - 1 - intJ), 1)) - 55) * intBase1 ^ intJ  
            Else  
                intResult += txtNombre1.Text.Substring((txtNombre1.Text.Length - 1 - intJ), 1) * intBase1 ^ intJ  
            End If  
        Next  
        lblResult1.Text = intResult  
    End Sub  
 
 
sur copernic agent en demandant : "base 7" vba

Reply

Marsh Posté le 02-10-2006 à 21:21:37    

Yahou !!!
 
bon je v me pendre et je regarderai sa demain quand je serais frais.
 
merci bcp !
 
Zorh.

Reply

Marsh Posté le 02-10-2006 à 21:45:28    

Bonne nuit,
je n'ai pas testé, mais c'est censé dans la séquence bouton1 clic transformer un nombre dans la base indiquée et le bouton2 clic faire la transformation inverse.
pour créer le record je suppose que tu sais faire.
Cordialement

Reply

Marsh Posté le 03-10-2006 à 14:18:21    

le revient sur mon sujet,
j'ai effectivement maintenant la possibilité de compter en base 7.
 
ma suite est en faite pas pareil ...
 
123456
 
6 se compte en base 7 cad de 0 à 6  
mais le reste des chiffres se compte normallement ....
 
exemple:
1001
1012
1023
1034
1045
......
 
comment faire ?
 
Merci !
Zorh.

Reply

Marsh Posté le 03-10-2006 à 17:22:36    

Bonsoir,
Je n'ai pas bien compris, 1001 donne 1001? etc??? je vais regarder ce soir comment fonctionne le module
Cordialement

Reply

Marsh Posté le 03-10-2006 à 21:22:09    

Bonsoir,
J'ai adapté la première partie à VBA:
Texte0 contient la valeur à convertir
Texte2 le résultat
Texte6 la base
Commande4 le bouton de commande
cela semble fonctionner
 
 
 
Private Function Inverser(ByVal strChaine As String)
        Dim intI As Long
        Dim strS As String
        montout = strChaine
        compteur = Len(strChaine)
'montout = Selection.Text
monresultat = ""
For c = 1 To compteur
moncar = Mid(montout, c, 1)
monresultat = moncar + monresultat
 
   
  Next c
Texte2 = monresultat
         
    End Function
   Private Sub Commande4_Click()
        Dim intNombre, intBase, intReste, intQuotient As Long
        intNombre = CInt(Texte0)
        intBase = CInt(Texte6)
        intQuotient = 1
        Texte2 = ""
        ' Tant que le quotient est différent de 0, le reste est affecté à chaque position du nombre converti
        Do While intQuotient <> 0
            intQuotient = intNombre \ intBase
            intReste = intNombre Mod intBase
            intNombre = intQuotient
            ' Si le reste > 9 ( code hexadécimal et plus ), une lettre est affecté au chiffre
            If intReste > 9 Then
                Texte2 = Texte2 + Chr(intReste + 55)
            Else
                Texte2 = Texte2 + Str(intReste)
            End If
        Loop
        ' On inverse la chaine puisque l'algorithme donne le nombre converti à l'envers
        Inverser (Texte2)
    End Sub
 
Cordialement

Reply

Marsh Posté le 03-10-2006 à 21:22:09   

Reply

Marsh Posté le 03-10-2006 à 21:46:13    

Re,
tu veux:
01
12
....
93
104
115
126
130
141
152
...??
 
1002
1013
...????
 

Reply

Marsh Posté le 03-10-2006 à 22:00:54    

Re re re
ne serait-ce pas cela que tu veux?
 
110 étant en exemple:
 
 
For i = 0 To 110
        nbvoulu = 10 * i + ((i + 1) Mod 7)
         
        MsgBox nbvoulu
        Next i
 
Cordialement

Reply

Marsh Posté le 04-10-2006 à 11:12:17    

seniorpapou Merci !
 
voici se que j'ai réussi à faire.
 
Function suivant(nb As Long) As Long
    Dim tempo As Long
    tempo = nb + 11
        If Right(tempo, 1) = "7" Then tempo = tempo - 7
    suivant = tempo
End Function
 
Sub calcul_LTA()
Dim mabase As DAO.Database
Dim matable As DAO.Recordset
Dim debut As Long
Dim nb_suite As Long
Dim boucle As Long
Set mabase = CurrentDb()
Set matable = mabase.OpenRecordset("Table1" )
debut = CLng(InputBox("début de la suite ??" ))
nb_suite = CLng(InputBox("Nombre de donné dans la suite ??" ))
For boucle = 1 To nb_suite
debut = suivant(debut)
matable.AddNew
matable("LTA" ) = debut
matable.Update
Next boucle
Set mabase = Nothing
End Sub
 
Cordialement,


Message édité par Zorh le 04-10-2006 à 11:12:54
Reply

Marsh Posté le 04-10-2006 à 14:05:06    

Bonjour,
j'ai testé ta séquence, elle est presqu'au point. Si je peux me permettre une suggestion pour l'améliorer:  
1) tester la validité de "debut" à la saisie
j'ai saisi 9 et c'est très bien passé, hors, il n'est pas dans la série.
 
2) la valeur saisie dans début n'est pas prise dans le fichier parce que "suivant" fait +11 tout de suite. Donc, si j'introduis 10 la première valeur est 21, si j'introduis 16 la première valeur est 20, si j'introduis 0 la première valeur est 11 . j'avais lu dans tes posts que ta première valeur était 1  (01).
 tiens nous au courant.
Cordialement
 
 
 
 

Reply

Marsh Posté le 04-10-2006 à 14:24:35    

bonjour seniorpapou,
 
effectivement j'ai eu une série pour faire mon projet et je n'est rien de plus.
 
série:
1001
1012
1023
1034
1045
1056
1060
1071
1082
1093
1104
1115
....
 
ta suggestion concernant le test de validité sur la saisie "debut" est très bonne !
 
malheureusement je vois pas comme je peus faire sa si tu as une idée ^^
 
je suis un piètre programmeur !
 
merci pour tout !
 
Zorh.

Reply

Marsh Posté le 04-10-2006 à 14:42:04    

c bon j'ai trouvé
 
SAISIE:
debut = CLng(InputBox("début de la suite ??" ))
If Right(debut, 1) > 6 Then
MsgBox ("N° érroné !" )
GoTo SAISIE:
end if

Reply

Marsh Posté le 04-10-2006 à 14:55:01    

Bon au final :
 
 
Function suivant(nb As Long) As Long
    Dim tempo As Long
    tempo = nb + 11
        If Right(tempo, 1) = "7" Then tempo = tempo - 7
    suivant = tempo
End Function
 
Sub calcul_LTA()
Dim mabase As DAO.Database
Dim matable As DAO.Recordset
Dim debut As Long
Dim nb_suite As Long
Dim boucle As Long
Set mabase = CurrentDb()
Set matable = mabase.OpenRecordset("Table1" )
SAISIE:
debut = CLng(InputBox("début de la suite ??" ))
If Right(debut, 1) > 6 Then
MsgBox ("N° LTA érroné !" )
GoTo SAISIE:
End If
debut = debut - 11
nb_suite = CLng(InputBox("Nombre de LTA disponible ??" ))
For boucle = 1 To nb_suite
debut = suivant(debut)
matable.AddNew
matable("LTA" ) = debut
matable.Update
Next boucle
Set mabase = Nothing
End Sub
 
tu aurai quelque chose à dire sur ça ?
merci de ton point de vue seniorpapou.
Zorh.

Reply

Marsh Posté le 04-10-2006 à 15:32:41    

Bonjour,
En première lecture cela semble bon.
Je contrôlerai tout à l'heure
Cordialement

Reply

Marsh Posté le 04-10-2006 à 15:47:59    

re,re
comme je vois que tu es en ligne:
si je mets 10, j'ai 10,21 etc...
si je mets 11, j'ai 11,22,etc ...est-ce cela que tu veux?  

Reply

Marsh Posté le 04-10-2006 à 16:23:03    

bien vu :/
 
tu as une suggestion de code pour sa ? je commence a être à sec et j'ai pas une grande connaissance en vba.
 
Merci.

Reply

Marsh Posté le 04-10-2006 à 16:42:21    

quoique non c bon ^^
 
je te remercie pour tout !
 
byebye

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed