OVH Cloud OVH Cloud

Initialiser une plage de cellules

3 réponses
Avatar
rick22560
Bonjour à tous,
J'ai tenté d'utiliser l'information ci-dessous mais je n'ai pas réussi à la
faire fonctionner dans une fonction qui recoit MaPlage en argument ByRef
...oups!!!
Peut-on réellement opérer de cette manière ?
Merci d'avance de votre réponse

Columns / Rows

Renvoie la collection de toutes les colonnes / lignes contenues dans la
plage. Cela peut permettre certains

raccourcis de programmation intéressant. Par exemple :

MaPlage.Columns(2).Value=""

Efface le contenu de toutes les cellules de la colonne 2 dans la plage.

3 réponses

Avatar
isabelle
bonjour rick,

pour une fonction ce n'est pas possible car la fonction ne peut modifier d'autre cellules,
elle ne fait que retourner une valeur.
mais c'est possible dans une macro.

isabelle

Bonjour à tous,
J'ai tenté d'utiliser l'information ci-dessous mais je n'ai pas réussi à la
faire fonctionner dans une fonction qui recoit MaPlage en argument ByRef
...oups!!!
Peut-on réellement opérer de cette manière ?
Merci d'avance de votre réponse

Columns / Rows

Renvoie la collection de toutes les colonnes / lignes contenues dans la
plage. Cela peut permettre certains

raccourcis de programmation intéressant. Par exemple :

MaPlage.Columns(2).Value=""

Efface le contenu de toutes les cellules de la colonne 2 dans la plage.




Avatar
valentin
Bonsoir,
Peut être une réponse , voir exemple ci - dessous :

' création de la fonction
Function Nettoyer(ByRef objPlage As Range) As Boolean
On Error GoTo Message
objPlage.Columns(2).Value = ""
Nettoyer = True
Exit Function
Message:
MsgBox Err.Description
Nettoyer = False

End Function

' essai de la fonction
Sub test()
Dim temoin As Boolean
Dim LaPlage As Range
Set LaPlage = ActiveSheet.Range("maplage")
temoin = Nettoyer(LaPlage)
MsgBox "fin"
end Sub

Bonne soirée
Valentin


"isabelle" a écrit dans le message de
news:
bonjour rick,

pour une fonction ce n'est pas possible car la fonction ne peut modifier
d'autre cellules,
elle ne fait que retourner une valeur.
mais c'est possible dans une macro.

isabelle

Bonjour à tous,
J'ai tenté d'utiliser l'information ci-dessous mais je n'ai pas réussi à
la faire fonctionner dans une fonction qui recoit MaPlage en argument
ByRef ...oups!!!
Peut-on réellement opérer de cette manière ?
Merci d'avance de votre réponse

Columns / Rows

Renvoie la collection de toutes les colonnes / lignes contenues dans la
plage. Cela peut permettre certains

raccourcis de programmation intéressant. Par exemple :

MaPlage.Columns(2).Value=""

Efface le contenu de toutes les cellules de la colonne 2 dans la plage.





Avatar
rick22560
Bonjour,
merci pour vos réponses, mais je ne m'explique pas bien pourquoi la
modification de la plage n'est pas possible directement par l'appel de la
fonction depuis la feuille de calcul ...? mystère !!!!

grâce à vous j'ai mis en place la solution suivante qui me permet de
"paramétrer" la plage à effacer :

Function Nettoyer(objPlage) As Boolean
On Error GoTo fin
Dim LaPlage As Range
Set LaPlage = ActiveSheet.Range(objPlage)
LaPlage.Columns(1).Value = ""
Nettoyer = True
fin: End Function

et l'appel se fait par :

Private Sub Worksheet_Change(ByVal Target As Range) ' Procédure évènement
' La cellule L2C10 contient le nom de la plage à traiter
If Target.AddressLocal(, , xlR1C1) = "L2C10" Then
temoin = Nettoyer(Target)
End If
End Sub

A l'origine je souhaitais écrire dans la cellule L2C10 la formule suivante
"=Nettoyer(UnePlage)" maintenant il me suffit d'écrire dans la même cellule
"UnePlage" et le tour est joué !

Merci encore de votre aide

rick

"valentin" a écrit dans le message de news:
47b487b8$0$17693$
Bonsoir,
Peut être une réponse , voir exemple ci - dessous :

' création de la fonction
Function Nettoyer(ByRef objPlage As Range) As Boolean
On Error GoTo Message
objPlage.Columns(2).Value = ""
Nettoyer = True
Exit Function
Message:
MsgBox Err.Description
Nettoyer = False

End Function

' essai de la fonction
Sub test()
Dim temoin As Boolean
Dim LaPlage As Range
Set LaPlage = ActiveSheet.Range("maplage")
temoin = Nettoyer(LaPlage)
MsgBox "fin"
end Sub

Bonne soirée
Valentin


"isabelle" a écrit dans le message de
news:
bonjour rick,

pour une fonction ce n'est pas possible car la fonction ne peut modifier
d'autre cellules,
elle ne fait que retourner une valeur.
mais c'est possible dans une macro.

isabelle

Bonjour à tous,
J'ai tenté d'utiliser l'information ci-dessous mais je n'ai pas réussi à
la faire fonctionner dans une fonction qui recoit MaPlage en argument
ByRef ...oups!!!
Peut-on réellement opérer de cette manière ?
Merci d'avance de votre réponse

Columns / Rows

Renvoie la collection de toutes les colonnes / lignes contenues dans la
plage. Cela peut permettre certains

raccourcis de programmation intéressant. Par exemple :

MaPlage.Columns(2).Value=""

Efface le contenu de toutes les cellules de la colonne 2 dans la plage.