Fonction a paramètre variable

Bonjour,

Je voudrais effectuer plusieurs fois une boucle avec un paramètre différent à chaque fois :

Exemple : Cette boucle copie tout le contenu situé sous l'intitulé de colonne "id"

For i = 1 To 15

Cells(1, i).Select

If Cells(1, i) = "id" Then

ligne_id = ActiveCell.Row

colonne_id = ActiveCell.Column

num = Cells(Rows.Count, colonne_id).End(xlUp).Row

Range(Cells(2, colonne_id), Cells(num, colonne_id)).Select

Selection.Copy

Exit For

End If

Next i

Je voudrais créer une fonction "copie" qui me permette d'effectuer cette action pour la colonne "nom" , "prénom" etc. en écivant simplement copie("id"), copie("nom") par exemple. Comment dois-je m'y prendre?

Un fichier vous ait joint.

Merci d'avance

8test.xlsm (14.15 Ko)

Bonjour

En passant par une fonction ce n'est pas possible, la fonction ne modifie rien (hormis sa propre cellule pour le résultat)

Il te reste la macro qui peut récupérer le nom de la cellule et te demander le nombre de lignes à numéroter

Essayes

Affectes cette macro à un raccourci clavier

Ensuite places toi sur une cellule et appelles la macro

Sub Recopie()
  rep = InputBox("Nombre de lignes")
  If Val(rep) > 0 Then
    ActiveCell = 1
    ActiveCell.AutoFill Destination:=ActiveCell.Resize(Val(rep), 1), Type:=xlFillSeries
  End If
End Sub

Merci mais ce n'est pas ce que je recherche. Car l'action doit être effectué automatiquement sans intervention de l'utilisateur. Je voulais juste simplifier l'écriture de mon code pour éviter de recopier plusieurs fois la même boucle. Si ce n'est pas possible tant pis.

Merci beaucoup.

Bonjour,

il faut saisir le nom du champ dans une cellule et que ta macro fasse son test dessus.

Ex avec nom du champ en E2 :

Sub test()
    For i = 1 To 15
        Cells(1, i).Select
        If Cells(1, i) = [E2] Then
            ligne_id = ActiveCell.Row
            colonne_id = ActiveCell.Column
            num = Cells(Rows.Count, colonne_id).End(xlUp).Row
            Range(Cells(2, colonne_id), Cells(num, colonne_id)).Select
            Selection.Copy
            Exit For
        End If
    Next i
End Sub

Plutôt que de balayer la ligne 1 tu peux améliorer la recherche de la colonne avec [1:1].find(....)

Mais bon, si tu débutes tu peux te contenter de ta boucle.

eric

Rechercher des sujets similaires à "fonction parametre variable"