Auteur de questions
Action pas disponible pour l'instant

Discussion générale
-
Bonjour,
J'aimerais savoir pourquoi lorsque je sélectionne un enregistrement (ligne entière) et copie manuellement dans une autre table tout fonctionne.
Par contre, si j'utilise une macro ou un code VBA, j'obtiens le message suivant:
* La commande ou l'action, sélectionner ligne entière n'est pas disponible pour l'instant, vous êtes peut-être dans une base de données en lecture seule, ou une base de données non convertie d'une version antérieure à Auto-Caisse 2011
* Le type d'objet auquel s'applique l'action n'est pas sélectionné actuellement ou ne se trouve pas dans le mode activé
N'utilisez que les commandes ou les actions qui sont actuellement accessibles pour cette base de données.
Ensuite le pas à pas :
Interne - Sous-formulaire Commandes actives pour paiement : Company : OnDblClick : Macro incorporée
Nom de l'action:
ExécuterCommandeMenu
Arguments:
570
Numéro de l'erreur:
2950
Ceci était pour la macro incorporée, maintenant j'ai essayé avec le VBA, voici le code:
Private Sub Order_ID_DblClick(Cancel As Integer) SélectionnerLigneCouperColler End Sub
Voici cette macro convertie:
Option Compare Database Function SélectionnerLigneCouperColler() On Error GoTo SélectionnerLigneCouperColler_Err DoCmd.OpenForm "CommandesPourAdditions", acNormal, "", "", , acNormal DoCmd.RunCommand acCmdSelectEntireRow DoCmd.RunCommand acCmdCut DoCmd.GoToRecord acForm, "CommandesPourAdditions", acNext DoCmd.RunCommand acCmdPaste SélectionnerLigneCouperColler_Exit: Exit Function SélectionnerLigneCouperColler_Err: MsgBox Error$ Resume SélectionnerLigneCouperColler_Exit End Function
Que j'utilise la commande acCmdCut ou acCmdCopy, c'est le même message:
Message: La commande ou l'action "SélectionnerLigneEntière" n'est pas disponible pour l'instant.
Ce que je saisi mal c'est que si je presse le bouton droit de la souris, je vois bien que la commande Couper n'est pas disponible, cependant, je peux sélectionner la ligne, copier et coller ou bon me semble.
De plus, après avoir lu que c'était peut-être relié aux emplacements approuvés, j'ai vérifié et mon répertoire ou se trouve ma base de données est bien dans cet endroit.
J'avais débuté cette base de données avec 2007 et j'utilise maintenant 2010, comment faire pour que tout soit disponible, c'est frustrant de voir que ce que tu veux faire se fait, mais pas pour moi.
Merci
Claude Larocque
Toutes les réponses
-
Bonjour,
Je vous suggère d'exploiter la méthode Execute comme vue dans d'autre réponses de vos différents messages :
Private Function CopyRecordToTable(ByVal IDRecord As Variant, ByVal IDPKName As String, ByVal TableFrom As String, ByVal TableTo As String) Dim SQL As String On Error GoTo ErrorCopy SQL = "INSERT INTO [" & TableTo & "] SELECT * FROM [" & TableFrom & "] WHERE [" & IDPKName & "] = " & IDRecord & ";" CurrentDb.Execute SQL, dbFailOnError On Error GoTo 0 ExitCopy: Exit Function ErrorCopy: MsgBox Err.Description, 48, Err.Source Resume ExitCopy End Function
Voici comment l'utiliser :
Sub Tester() CopyRecordToTable 10252, "N° commande", "Détails commandes", "Détails commandes Copie" End Sub
Argy -
Merci Argy,
Je vais tester sur le champ, en passant, j'ai affiché un problème hier regardant mon émulation d'un tableau noir pour menu, est-ce que tu pourrais y jeter un coup d'oeil, je crois que tu pourrais trouver la solution rapidement.
C'est intitulé: Attaché bouton de commande1 au 1er record d'un sous-formulaire, puis le 2e bouton de commande au 2e record et le 3e... Merci et bonne journée!
Claude Larocque -
Bonjour,
J'ai placé ce code sur le double-clic de mon sous-formulaire:
Private Sub Company_DblClick(Cancel As Integer) CopyRecordToTable CommandesPourAdditions, "Order ID", "Order Date", "Status ID", "Company" End Sub Private Function CopyRecordToTable(ByVal IDRecord As Variant, ByVal IDPKName As String, ByVal TableFrom As String, ByVal TableTo As String) Dim SQL As String On Error GoTo ErrorCopy SQL = "INSERT INTO [" & TableTo & "] SELECT * FROM [" & TableFrom & "] WHERE [" & IDPKName & "] = " & IDRecord & ";" CurrentDb.Execute SQL, dbFailOnError On Error GoTo 0 ExitCopy: Exit Function ErrorCopy: MsgBox Err.Description, 48, Err.Source Resume ExitCopy End Function
Et voici l'erreur que j'ai reçu, nombre d'arguments incorrects ou affectation de propriété incorrecte, je me demandais si ce n'est pas parce que je n'ai pas de ID comme tel dans la table CommandesPourAdditions
Merci
Claude Larocque -
S'il n'y a pas d'ID il faut trouver une condition WHERE idoine.
J'ai pris l'ID pour être sûr de "matcher".
Bref, vous pouvez modifier la fonction de manière à ce que les paramètres IDRecord et IDPKName soient dès lors WhereCondition
Private Function CopyRecordToTableA(ByVal WhereCondition As String, ByVal TableFrom As String, ByVal TableTo As String) Dim SQL As String On Error GoTo ErrorCopy SQL = "INSERT INTO [" & TableTo & "] SELECT * FROM [" & TableFrom & "] WHERE " & WhereCondition & ";" CurrentDb.Execute SQL, dbFailOnError CopyRecordToTable = True On Error GoTo 0 ExitCopy: Exit Function ErrorCopy: CopyRecordToTable = False Resume ExitCopy End Function
Il vous appartient alors de placer à cet endroit la condition correspondante sous la forme :
[Champ]='ValeurChaîne' ou [Champ]=ValeurNum ou [Champ]=#ValeurDate mm/dd/yyyy#
Argy -