Itération avec condition vba, excel -> access
Fermé
Teen
-
Modifié par Teen le 31/10/2011 à 14:35
eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 - 25 nov. 2011 à 15:08
eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 - 25 nov. 2011 à 15:08
A voir également:
- Itération avec condition vba, excel -> access
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
1 réponse
eljojo_e
Messages postés
1155
Date d'inscription
lundi 10 mai 2010
Statut
Membre
Dernière intervention
14 octobre 2022
153
25 nov. 2011 à 15:08
25 nov. 2011 à 15:08
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