totoro7
Messages postés6Date d'inscriptionlundi 26 avril 2010StatutMembreDernière intervention27 avril 2010
-
26 avril 2010 à 14:57
totoro7
Messages postés6Date d'inscriptionlundi 26 avril 2010StatutMembreDernière intervention27 avril 2010
-
27 avril 2010 à 16:42
Bonjour tout le monde,
Je suis nouvelle sur le forum et sur vba aussi.
J'aurai une petite question, j'ai pris du code sur le Web et la macro que j'ai mise sous OpenOffice.org Calc ne marche pas. En fait ca ne fait rien et aucun message d'erreur.Pourtant cela me semble correct d'après les recherches que j'ai faite.
Voilà le code :
rem Pour convertir excel VBA sous Calc
OPTION VBASupport 1
rem Permet d'effectuer une recopie incrémentée à partir de A1 et A2
Sub RecopieIncrementee()
dim PlageSource as range
dim PlageARemplir as range
Set PlageSource = Worksheets("Feuille3").Range("A1:A2")
' Effectue une recopie incrémentée de A1 à A20
Set PlageARemplir = Worksheets("Feuille3").Range("A1:A20")
PlageSource.AutoFill Destination:=PlageARemplir
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024137 26 avril 2010 à 16:24
Bonjour,
Voici le code:
Sub RecopieIncrementee()
Dim PlageSource As Range
Dim PlageARemplir As Range
Set PlageSource = Feuil3.Range("A1:A2")
' Effectue une recopie incrémentée de A1 à A20
Set PlageARemplir = Feuil3.Range("A1:A20")
PlageSource.AutoFill Destination:=PlageARemplir
totoro7
Messages postés6Date d'inscriptionlundi 26 avril 2010StatutMembreDernière intervention27 avril 2010 26 avril 2010 à 16:43
Oups ! Je ne sais pas ce que j'ai fait pour avoir "Réponse acceptée", désolé.
J'ai oublié de dire que l'erreur se situait au niveau de :
Set PlageSource = Feuil3.Range("A1:A2")
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024137 26 avril 2010 à 16:55
J'ai essayé chez moi, cela fonctionne correctement. Cela dépend peut-être de la façon dont vous appelez la macro. Pour faire le test j'ai ouvert un UserForm où j'ai mis un bouton avec ce code:
Private Sub CommandButton1_Click()
RecopieIncrementee
End Sub
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
totoro7
Messages postés6Date d'inscriptionlundi 26 avril 2010StatutMembreDernière intervention27 avril 2010 27 avril 2010 à 13:53
Bonjour,
Alors j'ai essayé ce que m'a conseillé le pivert, c'est à dire de faire un appel via un bouton. Et cela donne la même chose.
Erreur sur:
Set PlageSource = Feuil3.Range("A1:A2")
(C'est Feuil3 qu'il n'accepte pas j'ai essayé avec Feuille3 comme c'était écrit sur ma feuille mais ca ne marche pas non plus)
Il accepte avec Worksheets("Feuille3") mais cela ne fait pas grand chose. Pas de recopie à l'horizon.
Est ce que votre macro marche en faisant "exécuter macro" le Pivert ? Etes-vous bien sous calc ou sous excel?
totoro7
Messages postés6Date d'inscriptionlundi 26 avril 2010StatutMembreDernière intervention27 avril 2010 27 avril 2010 à 16:42
Bon, ben je crois qu'il doit y avoir incompatibilité entre excel et calc en ce qui concerne la méthode AutoFill, mais je n'en suis pas sûre.
J'ai réussi à faire de la recopie mais avec du code calc, je ne sais pas si ca marchera sous excel, mais de toute façon je n'en ai pas besoin.
Voilà le code si ca peut interesser du monde.
OPTION VBASupport 1
rem Permet d'effectuer une recopie incrémentée à partir de A1 et A2
Sub RecopieIncrementee()
dim document as object
dim dispatcher as object
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem Pointe sur les 2 premieres cellules A1 et A2,
rem qui doivent avoir des valeurs.
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "A1:A2"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem copie la zone
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem Pointe sur la cellule suivante A3 et toutes les cellules impaires
rem jusqu a 9 (3+6) pour pouvoir copier les 2 lignes
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
for i=0 to 6 step 2
x=3+i
args2(0).Value = "A"&x
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
rem colle les 2 lignes
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
next i