OVH Cloud OVH Cloud

Problème avec une macro rrécupérée sur internet

3 réponses
Avatar
beatrice
Bonjour à tous et toutes,
J'ai piqué la macro suivante sur un site mais ça me met une erreur quand
j'essaye de l'éxécuter. Je connais pas grand chose à tout ça mais je pense
que c'est parce que je n'ai pas défini "unecell". Mas je ne sais pas comment
dire que unecell=une cellule de la colonne G.
Merci pour votre aide et Bonne journée
Béatrice


'sélection multiple de lignes discontinues

Sub SelectionAvecUnionAméliorée(Critère)
'auteur inconnu

Dim uneCel As Range, rng As Range
For Each uneCel In Selection
'ici une condition pour sélectionner
If uneCel.Value = "En attente de réponse" Then
If rng Is Nothing Then
Set rng = uneCel.EntireRow
Else
Set rng = Union(rng, uneCel.EntireRow)
End If
End If
Next uneCel
rng.Select
End Sub

3 réponses

Avatar
anomymousA
bonjour,

Unecel est simplement une référence à un objet range contenu dans selection
qui est lui même un objet range ce qui permet par la méthode for each next de
s'affranchir de la connaissance du nombre de ranges contenues dans le range
qu'on scrute.

S'il y a une erreur d'exécution peux-tu dire à quel endroit exactement ?

Le code qui t'es fourni fait la chose suivante :

A partir d'une selection de cellules qui existe actuellement dans la feuille
Excel active du classeur actif , on scrute chacune des cellules qui
appartiennent à cette selection puis on compare leur valeur à "En Attente de
réponse".
Si la valeur est égale au critère, on va chercher à constituer un range
appelé rng composé seulement des lignes contenant les cellules qui répondent
au critères
Puis à la fin du programme , on selectionne le range rng qui est composé de
lignes discontinues.

Cela te va t-il comme explication ?

cette méthode est utile et efficace sous réserve de ne pas avoir trop de
cellules à agréger pour constituer un range par la méthiode Union. Autrement,
le temps put être un peu long.

A+

Bonjour à tous et toutes,
J'ai piqué la macro suivante sur un site mais ça me met une erreur quand
j'essaye de l'éxécuter. Je connais pas grand chose à tout ça mais je pense
que c'est parce que je n'ai pas défini "unecell". Mas je ne sais pas comment
dire que unecell=une cellule de la colonne G.
Merci pour votre aide et Bonne journée
Béatrice


'sélection multiple de lignes discontinues

Sub SelectionAvecUnionAméliorée(Critère)
'auteur inconnu

Dim uneCel As Range, rng As Range
For Each uneCel In Selection
'ici une condition pour sélectionner
If uneCel.Value = "En attente de réponse" Then
If rng Is Nothing Then
Set rng = uneCel.EntireRow
Else
Set rng = Union(rng, uneCel.EntireRow)
End If
End If
Next uneCel
rng.Select
End Sub



Avatar
beatrice
REbonjour,
Je ne peut pas te dire à quel endroit l'erreur se produit parce que ça ne le
montre pas mais le message d'erreur est
Erreur d'éxécution 91
Variable objet ou variable de bloc with non défini

Au fait merci pour tes explications.
Béatrice

bonjour,

Unecel est simplement une référence à un objet range contenu dans selection
qui est lui même un objet range ce qui permet par la méthode for each next de
s'affranchir de la connaissance du nombre de ranges contenues dans le range
qu'on scrute.

S'il y a une erreur d'exécution peux-tu dire à quel endroit exactement ?

Le code qui t'es fourni fait la chose suivante :

A partir d'une selection de cellules qui existe actuellement dans la feuille
Excel active du classeur actif , on scrute chacune des cellules qui
appartiennent à cette selection puis on compare leur valeur à "En Attente de
réponse".
Si la valeur est égale au critère, on va chercher à constituer un range
appelé rng composé seulement des lignes contenant les cellules qui répondent
au critères
Puis à la fin du programme , on selectionne le range rng qui est composé de
lignes discontinues.

Cela te va t-il comme explication ?

cette méthode est utile et efficace sous réserve de ne pas avoir trop de
cellules à agréger pour constituer un range par la méthiode Union. Autrement,
le temps put être un peu long.

A+

Bonjour à tous et toutes,
J'ai piqué la macro suivante sur un site mais ça me met une erreur quand
j'essaye de l'éxécuter. Je connais pas grand chose à tout ça mais je pense
que c'est parce que je n'ai pas défini "unecell". Mas je ne sais pas comment
dire que unecell=une cellule de la colonne G.
Merci pour votre aide et Bonne journée
Béatrice


'sélection multiple de lignes discontinues

Sub SelectionAvecUnionAméliorée(Critère)
'auteur inconnu

Dim uneCel As Range, rng As Range
For Each uneCel In Selection
'ici une condition pour sélectionner
If uneCel.Value = "En attente de réponse" Then
If rng Is Nothing Then
Set rng = uneCel.EntireRow
Else
Set rng = Union(rng, uneCel.EntireRow)
End If
End If
Next uneCel
rng.Select
End Sub





Avatar
beatrice
REREbonjour,
C'est bon j'ai trouvé en relisant tes explications j'ai vu ce qu'il n'allait
pas.
En fait c'est tout simplement parce que je n'avait pas déterminé (je ne sais
pas si on dit comme ça) la sélection dans laquelle il fallait qu'il recherche
la valeur.
Maintenant que je l'ai fait ça marche.
Merci pour tout (surtout les explications)
Bonne continuation
Béatrice


bonjour,

Unecel est simplement une référence à un objet range contenu dans selection
qui est lui même un objet range ce qui permet par la méthode for each next de
s'affranchir de la connaissance du nombre de ranges contenues dans le range
qu'on scrute.

S'il y a une erreur d'exécution peux-tu dire à quel endroit exactement ?

Le code qui t'es fourni fait la chose suivante :

A partir d'une selection de cellules qui existe actuellement dans la feuille
Excel active du classeur actif , on scrute chacune des cellules qui
appartiennent à cette selection puis on compare leur valeur à "En Attente de
réponse".
Si la valeur est égale au critère, on va chercher à constituer un range
appelé rng composé seulement des lignes contenant les cellules qui répondent
au critères
Puis à la fin du programme , on selectionne le range rng qui est composé de
lignes discontinues.

Cela te va t-il comme explication ?

cette méthode est utile et efficace sous réserve de ne pas avoir trop de
cellules à agréger pour constituer un range par la méthiode Union. Autrement,
le temps put être un peu long.

A+

Bonjour à tous et toutes,
J'ai piqué la macro suivante sur un site mais ça me met une erreur quand
j'essaye de l'éxécuter. Je connais pas grand chose à tout ça mais je pense
que c'est parce que je n'ai pas défini "unecell". Mas je ne sais pas comment
dire que unecell=une cellule de la colonne G.
Merci pour votre aide et Bonne journée
Béatrice


'sélection multiple de lignes discontinues

Sub SelectionAvecUnionAméliorée(Critère)
'auteur inconnu

Dim uneCel As Range, rng As Range
For Each uneCel In Selection
'ici une condition pour sélectionner
If uneCel.Value = "En attente de réponse" Then
If rng Is Nothing Then
Set rng = uneCel.EntireRow
Else
Set rng = Union(rng, uneCel.EntireRow)
End If
End If
Next uneCel
rng.Select
End Sub