Code VBA

totoro7 Messages postés 6 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 27 avril 2010 - 26 avril 2010 à 14:57
totoro7 Messages postés 6 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 27 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

End Sub

Quelqu'un aurait-il une idée ??
Merci.

totoro

8 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
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

End Sub
@+
0
totoro7 Messages postés 6 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 27 avril 2010
26 avril 2010 à 16:34
Bonjour,
Merci pour cette réponse rapide.
Ceci dit, j'ai une erreur si je mets ce code.
"Erreur d'exécution BASIC.
Variable d'objet non définie"

totoro
0
totoro7 Messages postés 6 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 27 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")


totoro
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
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
@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
totoro7 Messages postés 6 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 27 avril 2010
26 avril 2010 à 17:22
OK,je vais essayer de faire ca. Merci

totoro
0
totoro7 Messages postés 6 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 27 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?

Bon, je cherche, bonne journée quand même!

totoro
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
27 avril 2010 à 14:11
Désolé je suis sous Excel!
Et je n'est aucune notion de OpenOffice.org Calc
@+
0
totoro7 Messages postés 6 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 27 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

End Sub


Bonne journée à tout le monde
totoro
0
Rejoignez-nous