M'expliquer Set WorkRng = Application.Selection

bonjour, est-ce que quelqu'un pourrait m'expliquer en détail cette macro VBA

Elle fonctionne parfaitement mais je n'arrive pas à comprendre le principe.

Elle enlève les doubles retour chariot et les doubles espace.

Set WorkRng = Application.Selection

For Each Rng In WorkRng

Rng.Value = Replace(Rng.Value, Chr(10) + Chr(10), Chr(10))

Rng.Value = Replace(Rng.Value, " ", " ")

Next

je l'ai trouvé sur internet et je l'ai un peu modifiée.

set : ?

work Rng ?

Set WorkRng = Application.Selection ?

j'aimerais l'utiliser dans un programme mais pas question sans connaitre le principe, malgré que ça fonctionne parfaitement.

dom

Bonjour,

le mot-clé "Set" permet d'attribuer une référence à un objet.

Ainsi, WorkRng n'est pas une variable, mais un objet.

Cet objet fait référence à Application.Selection.

Dans ton exemple, ça fait une ligne en plus pour par grand chose. La macro suivante devrait fonctionner :

For Each Rng In Application.Selection
Rng.Value = Replace(Rng.Value, Chr(10) + Chr(10), Chr(10))
Rng.Value = Replace(Rng.Value, " ", " ")
Next

Bonjour,

WorkRng est un nom de variable qui représente un objet Range (= une plage de cellules).

Lorsque l'on déclare cette variable, elle est vide (puisque aucune plage ne lui est affectée) :

Dim WorkRng As Range

On lui affecte alors la plage actuellement sélectionnée dans l'application (ici Excel) :

Set WorkRng = Application.Selection

Ensuite, on boucle pour parcourir chaque cellule de cette plage (qui correspond à une variable cellule nommée Rng) :

For Each Rng In WorkRng
   'Instruction(s)
Next Rng

Une plage/cellule à de nombreuses propriétés : une hauteur, largeur, couleur de fond, police, taille de police... et une valeur définie par la propriété ".Value". Ici, on modifie la valeur.

Replace est une fonction similaire à la fonction Excel =SUBSTITUE(). Ici on remplace dans la valeur de la cellule, un double caractère "saut de ligne" par un unique caractère "saut de ligne". Celui ci est donné par la fonction Chr(CodeCaractère), équivalente à la fonction Excel =CAR(CodeCaractère)

superbes explications, merci à vous, melch et Pedro22...

En général j'arrive à comprendre, mais cette fois j'avais besoin d'aide.

représente un objet Range (= une plage de cellules).

le mot-clé "Set" permet d'attribuer une référence à un objet.

cela m'a aidé...

merci encore

représente un objet Range (= une plage de cellules).

le mot-clé "Set" permet d'attribuer une référence à un objet.

Bonjour,

Pour une variable "classique", qui ne contient qu'une information, pas besoin de Set.

Par exemple :

Dim MonNombre As Single
MonNombre = 0.5678

Sauf qu'un Range est un objet, qui contient donc de nombreuses informations (une valeur, une formule, une mise en forme...). Pour lui affecter l'ensemble de ses propriétés, on utilise alors Set.

Exemples :

Set MaPlage = Range("A1:A100")
Set MaFeuille = Worksheets("Feuil1")
Set MonClasseur = Workbooks("Fichier1.xlsx")

PS : C'est bien de le faire remarquer mais toi seul peut indiquer que le sujet est résolu en cochant la case au niveau de la réponse qui te semble la plus pertinente.

A+

Rechercher des sujets similaires à "expliquer set workrng application selection"