Comment utiliser une fonction sans valeur de retour

  • Initiateur de la discussion Nico_OOo
  • Date de début
N

Nico_OOo

Guest
bonjour a tous,
je voudrais utiliser ma fonction Copier_cell a l'interieur d une boucle.
Je precise que cette fonction na pas de valeur de retour.

Merci pour toute info sur l usage de ce type de fonction.

Sub Copie_Cellules()
'
' Copie_Cellules Macro
' Macro enregistrée le 29/04/2004 par NS
'

'
Dim ordo_depart As Integer
ordo_depart = 5

Function Copier_cell(cell_KO As Integer, cell_IN As Integer) As Boolean

Sheets("KO").Select
Cells(i, cell_KO).Select
Selection.Copy
Sheets("IN").Select
Cells(i + ordo_depart, cell_IN).Select
ActiveSheet.Paste
End Function

For i = 2 To 10

Copier_cell(i, 9)

Next i

End Function
 
S

sousou

Guest
Bonjour
Pour moi ta fonction,n'est pas une fonction mais bien une procédure (sub)
que tu doit appeler en passant les paramètres:
call copier_cell(a,b) ou a représente cell_ko et b représente cell_in .

Dans tous les cas ton code ne parrait pas très claire avec deux end function et un sub copie-cellules?
 
Z

Zon

Guest
Salut,

Nico ou steph comme promis sur le tchat:

Tu peux utiliser ta foncton Copier_cell tel quelle mais pas besoin de focntion car tu n'as pas de valeur de retour une sub classique suffit.

Si je comprends bien tu veux copier B2 puis C3, D4 .à K11. de la feuille Kompass vers la ligne 7 à 17 de la feuille INES mais comme tu ne définis pas Y je ne sais pas de quelle colonne, je présume que tu veux garder le même décalage de colonne.

Ta variable Y elle est initilisée où ? écrit comme ceci elle est égale à 0.

Si tu veux te servir de ordo_depart et de I dans les 2 procédures il faut déclarer ces variable au niveau module et non juste au niveau de la procédure Copie_Cellules.

En gardant ta structure de code, cela devrait donner ceci:
Option Explicit
Dim ordo_depart As Integer 'Variable de niveau module
Dim I As Integer

Sub Copie_Cellules()
Dim retour As Boolean ' pas besoin
Dim temp As String ' pas besoin
Dim Y As Integer
Application.ScreenUpdating = False 'évite le rafraichissement d'écran
ordo_depart = 5 'on initialise à 5
Y = 2 'à toi de déterminer la colonne de la feuille INES, pour commencer en B7

For I = 2 To 10
Copier_cell I, Y 'comme ceci pas besoin de parenthèses, par contre on écrira call Copier_cell(i,Y)
Y = Y + 1 'on décale de 1 colonne si besoin est
Next I
End Sub ' Correction quand on commence par sub Copie_cellules on finit par end sub

Function Copier_cell(cell_KOMPASS As Integer, cell_INES As Integer) As Boolean
With Sheets("KOMPASS")
.Cells(I, cell_KOMPASS).Copy
End With
With Sheets("INES")
.Paste .Cells(I + ordo_depart, cell_INES)
End With
Application.CutCopyMode = False 'On vide le presse papiers
End Function

A+++
 

Discussions similaires

Réponses
3
Affichages
1 K

Statistiques des forums

Discussions
312 047
Messages
2 084 858
Membres
102 688
dernier inscrit
Biquet78