Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index



Le 23/09/2011 18:33, lutch a écrit :
Le 23/09/11 16:21, l'honorable andriant.sandy nous a écrit :
Bonjour,

Comment déboguer cette macro dans laquelle la syntaxe de la ligne 14 bloque ?


1. Sub ajouter()
2. '
3. ' ajouter Relevé Macro
4. '
5. Dim Entree1 As Integer
6. Dim Entree2 As Integer
7. Dim Msg1 As String
8. Dim Msg2 As String
9. Msg1 = "Noter le n° de la ligne à partir de laquelle vous voulez ajouter 20
lignes"
10. Msg2 = "Noter le n° de la dernière ligne (nbr de lignes - 1)"
11. Entree1 = InputBox(Msg1)
12. Entree2 = InputBox(Msg2)
13. If IsNumeric(Entree1) Then
14. Rows("Entree1:Entree2").Select
15. Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
16. Sheets("Feuil2").Select
17. Range("I1:I20").Select
18. Selection.Copy
19. Sheets("Feuil1").Select
20. Range("Entree1").Select
21. Selection.PasteSpecial Paste:=xlPasteValues
22. End If
23. End Sub

Je voudrais aussi supprimer Msg2 en créant une variable Entree2 = Entree1 + 19 mais c'est aussi refusé.
Merci

Cordialement,
Sandy-Pascal Andriant

Bonjour,

de longue date béotien en VBA, je suis coutumier de ce type d'erreurs…
Quels sont les messages d'erreur ?

À ce que j'en comprends
Entree# de type Integer est censé récupérer Msg# de type String >> ça coincera toujours
La boucle If teste le caractère numérique, mais ne fait rien si ça ne l'est.
Quid si l'utilisateur se trompe ?

À quel objet Rows("Entree1:Entree2").Select est-il appliqué ?

Il doit manquer, je dis ça de mémoire sans Excel sous la main, un
With ActiveSheet (à confirmer)
14.
…
22.
End With

À défaut, il faut ajouter l'objet avant Rows.
Par ailleurs, dans certains cas, Select ne suffit pas, VBA attend un objet.Activate Pour additionner Entree1 et 19, ils doivent d'abord être convertis en numérique, InputBox typant en String, si je ne me trompe pas.

En espérant ne pas avoir raconté trop d'âneries.

C_Lucien

Je corrige le With.

1. Sub ajouter()
2. '
3. ' ajouter Relevé Macro
4. '
5. Dim Entree1 As Integer
6. Dim Entree2 As Integer
7. Dim Msg1 As String
8. Dim Msg2 As String
9. Msg1 = "Noter le n° de la cellule A... dans laquelle vous voulez ajouter 20
   lignes"
10. Msg2 = "Noter le n° de la dernière ligne (nbr de lignes - 1)"
11. Entree1 = InputBox(Msg1)
12. Entree2 = InputBox(Msg2)
13.      With ActiveSheet
14.      If IsNumeric(Entree1) Then
15.      Rows("Entree1:Entree2").Select
16.      Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
17.      Sheets("Feuil2").Select
18.      Range("I1:I20").Select
19.      Selection.Copy
20.      Sheets("Feuil1").Select
21.      ActiveSheet.Range("Entree1").Select
22.      Selection.PasteSpecial Paste:=xlPasteValues
23.      End If
24.      End With
25.      End Sub


Effectivement "Incompatibilité" 13 : en ligne 15.
J'ignore comment changer le type de la variable de String à Integer :-[
Cordialement, Sandy-Pascal Andriant

--
Envoyez un mail à users+help@fr.libreoffice.org pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être 
supprimés

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.