Itération avec condition vba, excel -> access
Teen
-
eljojo_e Messages postés 1155 Date d'inscription Statut Membre Dernière intervention -
eljojo_e Messages postés 1155 Date d'inscription Statut Membre Dernière intervention -
Bonjour le forum,
J'utilise un programme vba sur excel qui fonctionne très bien et je souhaite désormais l'utiliser sur une table access, mais le langage vba semble bien différent. Mes interrogations sont :
-Comment affecter à une variable la valeur d'un champ d'un enregistrement, équivalent de mavariable = Range("A" & i).value dans vba pour excel?
-Comment affecter à une variable la valeur d'un champ d'un enregistrement précédent, équivalent de mavariable = Range("A" & i-1).value?
-Comment inscrire ces variables dans ma table, équivalent de Range("A" & i-1).value = mavariable
Si vous nécessitez plus d'infos, voici le code simplifié que je veux traduire, toutes les variables sont de type : temps_prod = Range("A" & i).Value ou Range("A" & i-1).Value
Je vous remercie pour votre aide.
Teen
J'utilise un programme vba sur excel qui fonctionne très bien et je souhaite désormais l'utiliser sur une table access, mais le langage vba semble bien différent. Mes interrogations sont :
-Comment affecter à une variable la valeur d'un champ d'un enregistrement, équivalent de mavariable = Range("A" & i).value dans vba pour excel?
-Comment affecter à une variable la valeur d'un champ d'un enregistrement précédent, équivalent de mavariable = Range("A" & i-1).value?
-Comment inscrire ces variables dans ma table, équivalent de Range("A" & i-1).value = mavariable
Si vous nécessitez plus d'infos, voici le code simplifié que je veux traduire, toutes les variables sont de type : temps_prod = Range("A" & i).Value ou Range("A" & i-1).Value
For i = 2 To fin If Ligne1 = Ligne0 Then temps_prod = temps_prod + temps * quantité If temps_prod < délai Then consomation_max = consomation_max + consomation Else: consomation_max = consomation_max + (délai - Range("I" & i - 1).Value) / Range("E" & i).Value End If Else: temps_prod = temps * quantité consomation_max = consomation End If 'Ecriture des valeurs dans des cases excel Workbooks("Calculo consumo.xls").Activate Range("I" & i).Value = temps_prod Range("J" & i).Value = consomation_max Next End Sub
Je vous remercie pour votre aide.
Teen
A voir également:
- Itération avec condition vba, excel -> access
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
1 réponse
Salut,
Sur access, tu ne peut pas ciblé exactement un champ directement comme excel.
Access fonctionne par enregistrement (ligne).
Je pense qu'il, soit utiliser une requete Mise a jour soit passer par la méthode recorset (un peu plus complexe) exemple :
Sub test()
'
'
Dim TPTX As Recordset 'défini TPTX comme un enregistrement d'une table en général
Dim TFU As Recordset
Dim cTPTX, cTFU As Integer
Set data_base = CurrentDb 'défini date_base comme la base ouverte
Set TPTX = data_base.OpenRecordset("T Pgm TX", dbOpenTable) 'défini TPTX comme enregistrement de la table indiqué
cTPTX = TPTX.RecordCount ' nombre d'enregistrement
TPTX.MoveFirst ' aller au premier enregistrement
For a = 1 To cTPTX ' cTPTX étant le nombre d'enregistrement
If TPTX![id].Value = "" Or IsNull(TPTX![id].Value) Then
Select Case MsgBox("ID inexistant pour : " & vbLf & vbLf & TPTX![COMMUNES].Value & " " & TPTX![LOCALISATION PRECISE].Value & " " & TPTX![TypeAU].Value & " " & TPTX![Référence Urbanisme].Value & vbLf & vbLf & "En générer un ? - > ID " & (DMax("[ID]", "T Pgm TX") + 1), vbYesNo)
Case vbYes
TPro.Edit 'Permet d'éditer un champ (ou une case en excel)
TPTX![id] = DMax("[ID]", "T Pgm TX") + 1
TPro.Update ' valide le champ
Case vbNo
End Select
End If
next
Sur access, tu ne peut pas ciblé exactement un champ directement comme excel.
Access fonctionne par enregistrement (ligne).
Je pense qu'il, soit utiliser une requete Mise a jour soit passer par la méthode recorset (un peu plus complexe) exemple :
Sub test()
'
'
Dim TPTX As Recordset 'défini TPTX comme un enregistrement d'une table en général
Dim TFU As Recordset
Dim cTPTX, cTFU As Integer
Set data_base = CurrentDb 'défini date_base comme la base ouverte
Set TPTX = data_base.OpenRecordset("T Pgm TX", dbOpenTable) 'défini TPTX comme enregistrement de la table indiqué
cTPTX = TPTX.RecordCount ' nombre d'enregistrement
TPTX.MoveFirst ' aller au premier enregistrement
For a = 1 To cTPTX ' cTPTX étant le nombre d'enregistrement
If TPTX![id].Value = "" Or IsNull(TPTX![id].Value) Then
Select Case MsgBox("ID inexistant pour : " & vbLf & vbLf & TPTX![COMMUNES].Value & " " & TPTX![LOCALISATION PRECISE].Value & " " & TPTX![TypeAU].Value & " " & TPTX![Référence Urbanisme].Value & vbLf & vbLf & "En générer un ? - > ID " & (DMax("[ID]", "T Pgm TX") + 1), vbYesNo)
Case vbYes
TPro.Edit 'Permet d'éditer un champ (ou une case en excel)
TPTX![id] = DMax("[ID]", "T Pgm TX") + 1
TPro.Update ' valide le champ
Case vbNo
End Select
End If
next