VBA Excel fonctions

Bonjour,

Je dois faire plusieurs fonctions simple du style copier les donnees d'une feuille excel feuille 1 vers une autre feuille2 excel aussi,et j'ai du mal parceque les donnees de la feuille 1 je dois les copier a la suite de la feuille 2, et je fais bcp d'erreur niveau algo meme si c'est des fonctions simples. Puis idem je veux aussi faire une fonction qui exporte ,puis qui lit les donner, etc. Je sais faire ca avec un Sub un programme en entier mais avec les fonctions je bloque, moi je fais ca : sheet("feuille1").select.copy=sheets("feuille2) , et c'est pas bon, j'ai aussi essayé comme ca: function copy_donnees( p as range, f as feuille) sheet(" A2:B1").select.copy=sheets("A25:B81") en function, ca marche toujours pas, j'arrive pas a copier le range

Merci pour votre aide

Je ne suis pas une mâsse en VBA mais il me semble que ta syntaxe :

sheet(" A2:B1").select.copy=sheets("A25:B81")

est fausse. Quand on parle de ("A25:B81"), on fait référence à des lignes et des colonnes et non des feuilles .

Autrement dis, il faudrait écrire :

sheet("feuille1").range("A2:B1").select.copy=sheets("feuille2").range("A25:B81")

Range renvoie à une cellule, et sheet à une feuille

Comme je l'ai dis je ne suis pas un expert, donc j'espère ne pas avoir dis trop de conneries. En espérant que cela t'ai aidé.

je vois merci quand meme!

Mais avec ce que tu as noté, ca signifie qu'on peut copier et de selectionner les donnees sur la meme ligne? on a le droit de faire ca?

merci

Bonjour tout le monde,

On peut effectivement copier et coller des données en une seule ligne de code, mais il faut utiliser la bonne syntaxe :

Sheets("feuille1").Range("A2:B1").Copy Destination:=Sheets("feuille2").Range("A25")

Range renvoie à une plage de cellules (une cellule seule étant également une plage), Cells à une cellule seule.

Cordialement.

Parfait, ca me rassure!

Alors en entier ma fonction est bonne ?

Function copier(r as range , f as feuille)

Sheets("feuille1").Range("A2:B1").Copy Destination:=Sheets("feuille2").Range("A25")

end function

?


ah aussi,

pour appeler cette fonction c'ets bon ca:

Call copier()

?

j'ai oublié de mettre un exemple dans mon message :

Worksheets("feuil1").Range("A1:D4").Copy Destination:=Worksheets("feuil2").Range("A9")

Ah Yvouille m'a devancé. lol

bonsoir,

la syntaxe de la definition de la fonction est correcte mais tu n'utilises pas les paramètres de ta fonction, donc les paramètres ne servent à rien. De plus ta fonction ne retourne aucune valeur, il n'est donc pas nécessaire de la définit comme une fonction

et donc voici comment tu aurais pu la définir

sub copier()
Sheets("feuille1").Range("A2:B1").Copy Destination:=Sheets("feuille2").Range("A25")
end sub

lea90 a écrit :

ah aussi,

pour appeler cette fonction c'est bon ca:

Call copier()

?

si tu enlèves les paramètres dans la défintion de la fonction/sub, c'est bon

Voici tes deux macros :

Pour copier-coller :

Sub xxxx()
Sheets("feuille1").Range("A2:B1").Copy Destination:=Sheets("feuille2").Range("A25")
End Sub

Pour appeler la macro xxxx :

Sub aaaa()
xxxx
End Sub

Variante que je prèfère, autrement tu oublies parfois - selon le nom de la macro appelée - que c'est un appel de macro (tu suis ?) :

Sub aaaa()
Call xxxx
End Sub

Cordialement.

Re, non non je veux faire ca avec une Fonction "Function" pas avec un programme qui commence par "Sub...End Sub"

et derniere question pour finir, est ce que je peux dans une meme ligne activer,copier coller ces données? par exemple ca;

Sheets("feuille1").Range("A2:B1").Activate.Copy. Destination:=Sheets("feuille2").Range("A25")

Léa,

Si tu avais essayé toi-même ce code, tu aurais vu qu’il ne passait pas, non ?

De plus, H2So4 t’a expliqué pourquoi il était inutile de passer par une fonction. Sans plus d’informations de ta part, on ne peut que te répéter que tu es dans l’erreur.

A ces conditions, je laisse tomber ce fil.

Cordialement.

Rechercher des sujets similaires à "vba fonctions"