Vba erreur générée 424
Résolu
mcou
-
mcou -
mcou -
Bonjour,
J'ai créé une macro dont le début est le passage suivant (appelons le delta).
Isolé seul dans un module, delta fonctionne très bien.
Intégré au reste de ma macro, ça bug !
L'erreur est 424, objet requis.
Je ne comprend pas. Quelqu'un a-t-il une explication à fournir ?
J'ai créé une macro dont le début est le passage suivant (appelons le delta).
Isolé seul dans un module, delta fonctionne très bien.
Intégré au reste de ma macro, ça bug !
L'erreur est 424, objet requis.
Je ne comprend pas. Quelqu'un a-t-il une explication à fournir ?
Dim Plage As Range Dim Plage2 As Range Sub Verif_Solde() Dim I As Long 'déclaration de la variable I comme étant un entier long 'se placer au début de la ligne à solder en sélectionnant toute la ligne 'il faut que la cellule active soit en colonne A ! Set Plage = Application.InputBox("Veuillez sélectionner la ligne que vous voulez solder. Placez vous de façon à ce que la cellule active soit à l'intersection de la ligne que vous voulez solder et de la colonne A.", "SELECTION DE LA LIGNE", Type:=8) 'oblige la saisie d'une plage de donnée et renvoie cette plage à la variable Plage définie auparavant MsgBox ("La plage que vous avez sélectionnée est : " & Plage.Address) 'indique l'adresse de la plage sélectionnée ... 'la suite n'est pas écrit End Sub
A voir également:
- Vba erreur générée 424
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
3 réponses
Re,
Code modifie pour ANNULER et Croix de fermeture. Ai fait un tour du cote de developpez.net. Il faut en plus allez dans vba: outils, options, General et cocher Arret sur les erreurs non gerees.
Par contre rien de nouveau avec Ok.
A suivre
Code modifie pour ANNULER et Croix de fermeture. Ai fait un tour du cote de developpez.net. Il faut en plus allez dans vba: outils, options, General et cocher Arret sur les erreurs non gerees.
Sub Verif_Solde() Dim Plage As Range Dim Plage2 As Range Dim I As Long 'déclaration de la variable I comme étant un entier long 'gestion ANNULER et Croix de fermeture On Error Resume Next Set Plage = Nothing 'se placer au début de la ligne à solder en sélectionnant toute la ligne 'il faut que la cellule active soit en colonne A ! Set Plage = Application.InputBox("Veuillez sélectionner la ligne que vous voulez solder. Placez vous de façon à ce que la cellule active soit à l'intersection de la ligne que vous voulez solder et de la colonne A.", "SELECTION DE LA LIGNE", Type:=8) 'gestion ANNULER et Croix de fermeture If Plage Is Nothing Then MsgBox "Je traite la situation" On Error GoTo 0 Exit Sub End If 'oblige la saisie d'une plage de donnée et renvoie cette plage à la variable Plage définie auparavant MsgBox ("La plage que vous avez sélectionnée est : " & Plage.Address) 'indique l'adresse de la plage sélectionnée ActiveCell.Offset(0, 12).Select 'sélectionne la cellule de la ligne correspondant à la colonne LN/BW/LR 'cette cellule doit être impérativement remplie Do While ActiveCell.Value = "" ' la boucle s'exécute tant que la cellule est vide MsgBox "La cellule doit être impérativement remplie ", vbCritical ActiveCell = UCase(InputBox("Veuillez indiquer l'état de la commande", "LN/BW/LR", "")) Loop ActiveCell.Offset(0, 1).Select 'se place dans la colonne delivery Do While ActiveCell.Value <> "Y" ' la boucle s'exécute tant que la cellule est vide MsgBox "La cellule doit être impérativement remplie par Y ", vbCritical ActiveCell = UCase(InputBox("Veuillez indiquer l'état de la commande.", "DELIVERY", "Y")) Loop ActiveCell.Offset(0, 1).Select 'se place dans la colonne date cegid I = ActiveCell.Row 'indique que la variable I est le numéro de la ligne active Do While ActiveCell.Value < Cells(I, 8).Value 'Si la valeur en Pi est inférieure de la valeur en Hi, avec 8 correspond au numéro de la colonne H MsgBox "La date Cegid (colonne P) est inférieure à la date initialement prévue en colonne H. La date Cegid doit lui être impérativement supérieure ou égale.", vbCritical ActiveCell = InputBox("Veuillez saisir de nouveau la date Cegid en colonne Q", "DATE CEGID", Cells(I, 8).Value) Loop ActiveCell.Offset(0, 1).Select 'se place dans la colonne montant I = ActiveCell.Row 'indique que la variable I est le numéro de la ligne active Do While ActiveCell.Value <> Cells(I, 7).Value 'Si la valeur en Gi est différente de la valeur en Qi, avec 7 correspond au numéro de la colonne G et 17 à la colonne Q MsgBox "Le montant Cegid (colonne Q) est différent du montant saisi initialement (colonne G).", vbCritical ActiveCell = InputBox("Veuillez saisir de nouveau le montant Cegid (colonne Q)", "AMOUNT", Cells(I, 7).Value) Loop ActiveCell.Offset(0, 1).Select 'demande SCM If MsgBox("Le solde de la ligne s'effectue-t-il en cours du mois ? (SCM)", vbQuestion + vbYesNo) = vbYes Then ActiveCell = "SCM" End If If MsgBox("Avez-vous-un commentaire à copier avec une ligne doublon ? La ligne doublon, dont le commentaire sera copié, sera ensuite supprimée", vbQuestion + vbYesNo) = vbYes Then ActiveCell.Offset(0, -7).Select 'Call Copie_Comments End If Range(Plage.Address).Select 'sélectionne la ligne initiale Selection.Interior.ColorIndex = 15 'solde la ligne initiale en attribuant la couleur grise aux cellules Calculate 'recalcule la feuille MsgBox "La vérification du rapprochement est terminée avec succès et la ligne est soldée", vbOKOnly End Sub
Par contre rien de nouveau avec Ok.
A suivre
Votre code fonctionne à merveille. Mais ne résoud pas le problème.
Si je mets votre code dans un nouveau module de mon classeur cela fonctionne.
Si je m'en sert pour remplacer (par copier coller) mon ancien code, ça bug.
Je crois que je vais garder le nouveau modèle. en espérant que cela fonctionne continuellement par la suite...
Si je mets votre code dans un nouveau module de mon classeur cela fonctionne.
Si je m'en sert pour remplacer (par copier coller) mon ancien code, ça bug.
Je crois que je vais garder le nouveau modèle. en espérant que cela fonctionne continuellement par la suite...
Finalement, j'ai contourné le problème. Voici une macro qui fonctionne bien !
Option Explicit Dim Plage As Range Dim Noligne As Long Sub Verif_Solde() Dim I As Long 'déclaration de la variable I comme étant un entier long 'se placer au début de la ligne à solder en sélectionnant toute la ligne 'il faut que la cellule active soit en colonne A ! MsgBox ("La ligne que vous voulez soldée correspond au numéro de référence : " & ActiveCell.Value) Noligne = ActiveCell.Row ActiveCell.Offset(0, 12).Select 'sélectionne la cellule de la ligne correspondant à la colonne LN/BW/LR ' cette cellule doit être impérativement remplie Do While ActiveCell.Value = "" ' la boucle s'exécute tant que la cellule est vide MsgBox "La cellule doit être impérativement remplie ", vbCritical ActiveCell = UCase(InputBox("Veuillez indiquer l'état de la commande", "LN/BW/LR", "")) Loop ActiveCell.Offset(0, 1).Select 'se place dans la colonne delivery Do While ActiveCell.Value <> "Y" ' la boucle s'exécute tant que la cellule est vide MsgBox "La cellule doit être impérativement remplie par Y ", vbCritical ActiveCell = UCase(InputBox("Veuillez indiquer l'état de la commande.", "DELIVERY", "Y")) Loop ActiveCell.Offset(0, 1).Select 'se place dans la colonne date cegid I = ActiveCell.Row 'indique que la variable I est le numéro de la ligne active Do While ActiveCell.Value < Cells(I, 8).Value 'Si la valeur en Pi est inférieure de la valeur en Hi, avec 8 correspond au numéro de la colonne H MsgBox "La date Cegid (colonne P) est inférieure à la date initialement prévue en colonne H. La date Cegid doit lui être impérativement supérieure ou égale.", vbCritical ActiveCell = InputBox("Veuillez saisir de nouveau la date Cegid en colonne Q", "DATE CEGID", Cells(I, 8).Value) Loop ActiveCell.Offset(0, 1).Select 'se place dans la colonne montant I = ActiveCell.Row 'indique que la variable I est le numéro de la ligne active Do While ActiveCell.Value <> Cells(I, 7).Value 'Si la valeur en Gi est différente de la valeur en Qi, avec 7 correspond au numéro de la colonne G et 17 à la colonne Q MsgBox "Le montant Cegid (colonne Q) est différent du montant saisi initialement (colonne G).", vbCritical ActiveCell = InputBox("Veuillez saisir de nouveau le montant Cegid (colonne Q)", "AMOUNT", Cells(I, 7).Value) Loop ActiveCell.Offset(0, 1).Select 'demande SCM If MsgBox("Le solde de la ligne s'effectue-t-il en cours du mois ? (SCM)", vbQuestion + vbYesNo) = vbYes Then ActiveCell = "SCM" End If If MsgBox("Avez-vous-un commentaire à copier avec une ligne doublon ? La ligne doublon, dont le commentaire sera copié, sera ensuite supprimée", vbQuestion + vbYesNo) = vbYes Then ActiveCell.Offset(0, -7).Select Call Copie_Comments End If Range("A" & Noligne - 1).Select Selection.EntireRow.Select 'sélectionne la ligne initiale Selection.Interior.ColorIndex = 15 'solde la ligne initiale en attribuant la couleur grise aux cellules Calculate 'recalcule la feuille MsgBox "La vérification du rapprochement est terminée avec succès et la ligne est soldée", vbOKOnly End Sub Sub Copie_Comments() 'Permet de copier le commentaire dans la bonne cellule Dim Plage As Range Set Plage = Application.InputBox("Veuillez sélectionner la cellule à copier correspondant au commentaire initial de la ligne (colonne J). ", "COMMENTAIRE", Type:=8) MsgBox ("La plage que vous avez sélectionnée est : " & Plage.Address) Range(Plage.Address).Copy 'copie le commentaire ActiveSheet.Paste 'colle le commentaire dans la cellule active (adresse définie dans la macro principale) Range(Plage.Address).Select 'sélectionne le commentaire à supprimer Selection.EntireRow.Delete 'supprime la ligne du commentaire en entier End Sub
j'oubliais de préciser le principal !
Comme ecrit plus haut, ce morceau de code marche dans un module ou dans le vba d'une feuille, mais vous, vous l'avez mis ou?????
Et, pour comprendre l'erreur j'ai testé dans un nouveau module en l'extrayant de la macro initiale. J'ai bien vu alors que le code fonctionnait. Mais lorsqu'il est associé au reste de ma macro, l'erreur est générée
Sans le code complet, je ne peut pas voir ou cela coince.