Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

erreur 1004 : sélection échouée

5 réponses
Avatar
RomainCHY
Bonjour à tous et à toutes,

J'ai un problème dans une procédure qui est censée sélectionner et colorier
le fond des cellules dont la valeur est "PARTIES COMMUNES". Ces cellules sont
dans la colonnes B de la feuille "ElecBordereau".

Ce que je veux, c'est que lorsque l'utilisateur clique sur CommandButton de
mon userform, cette procédure se mette en place.

J'ai déjà écrit ses mêmes lignes de programmation pour une autre feuille
"Bordereau" et un autre userform dans le même programme Excel. Ca marche très
bien.

Mais pour ce userform, ca ne marche pas (erreur 1004: la méthode select de
la classe range a échoué). Quelqu'un peut-il m'aider? Pourquoi dans un même
programme, la même procédure fonctionne une fois sur deux?

Merci d'avance à tous ceux qui peuvent m'aider.

Je joins le code de cette procédure et je précise que je suis débutant.

For Each w In Sheets("ElecBordereau").Range("B8:B120")
If w.Value = "PARTIES COMMUNES" Then
w.Select

With Selection.Interior
.ColorIndex = 37
.Pattern = xlSolid
End With

Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
End If
Next w

5 réponses

Avatar
FFO
Salut à toi
Ton code en l'état chez moi fonctionne
Toute fois tu peux essayer de remplacer la ligne :

For Each w In Sheets("ElecBordereau").Range("B8:B120")

par

For Each w In Sheets("ElecBordereau").Range("B8","B120")


Peut être celà fonctionnera t'il mieux

Dis moi !!!


Bonjour à tous et à toutes,

J'ai un problème dans une procédure qui est censée sélectionner et colorier
le fond des cellules dont la valeur est "PARTIES COMMUNES". Ces cellules sont
dans la colonnes B de la feuille "ElecBordereau".

Ce que je veux, c'est que lorsque l'utilisateur clique sur CommandButton de
mon userform, cette procédure se mette en place.

J'ai déjà écrit ses mêmes lignes de programmation pour une autre feuille
"Bordereau" et un autre userform dans le même programme Excel. Ca marche très
bien.

Mais pour ce userform, ca ne marche pas (erreur 1004: la méthode select de
la classe range a échoué). Quelqu'un peut-il m'aider? Pourquoi dans un même
programme, la même procédure fonctionne une fois sur deux?

Merci d'avance à tous ceux qui peuvent m'aider.

Je joins le code de cette procédure et je précise que je suis débutant.

For Each w In Sheets("ElecBordereau").Range("B8:B120")
If w.Value = "PARTIES COMMUNES" Then
w.Select

With Selection.Interior
.ColorIndex = 37
.Pattern = xlSolid
End With

Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
End If
Next w


Avatar
RomainCHY
FFO,
ça marche très bien! Comme quoi, ça ne tient à rien... merci beaucoup.

J'ai un autre souci, j'voudrais que ca fasse pareil pour les cellules dont
la valeur est "DIVERS".

Donc, j'ai mis un truc genre
If w.value = "PARTIES COMMUNES" or w.value ="DIVERS" then
w.select
...

Ca ne marche qu'avec PARTIES COMMUNES! Misère.

Tu aurais une idée de la cause?

Merci d'avant et d'avance.
Avatar
FFO
Rebonjours à toi
Content de t'avoir aidé
En ce qui concerne ta 2° demande, ta ligne en l'état fonctionne impec chez
moi !!!
Surprenant qu'il en soit pas de même chez toi

A mon avis tes cellules "DIVERS" doivent comporter un caractère
supplémentaire non visible comme un blanc en début ou en fin
Vérifie de ce côté
Tu peux copier la valeur d'une cellule comportant cette donnée et l'intégrer
par un collé dans la ligne
Tu est sur ainsi de tout prendre
Mais peut être qu'un petit ménage serait plus judicieux pour n'avoir que la
donnée

Autre essai : ne mettre qu'une condition avec If w.value = "DIVERS" et de
voir ce que celà donne avant de remettre les 2 conditions

Tiens moi au courrant !!!



FFO,
ça marche très bien! Comme quoi, ça ne tient à rien... merci beaucoup.

J'ai un autre souci, j'voudrais que ca fasse pareil pour les cellules dont
la valeur est "DIVERS".

Donc, j'ai mis un truc genre
If w.value = "PARTIES COMMUNES" or w.value ="DIVERS" then
w.select
...

Ca ne marche qu'avec PARTIES COMMUNES! Misère.

Tu aurais une idée de la cause?

Merci d'avant et d'avance.


Avatar
RomainCHY
Incompréhensible! Ca ne veut pas marcher.
Est-il possible que ca vienne du fait que j'ai une même procédure dans un
autre userform pour une autre feuille?

Ca marche avec Partie Commune, mais pas pour DIVERS.
Avatar
RomainCHY
Le Bug: je me suis rendu compte que ct l'itération qui ne fonctionnait pas.
En fait, ca marchait avec PARTIES COMMUNES parce que ct la première cellule
testée.

J'ai remplacé range("B8,B200") par range("B8:B200") et j'ai remis ce que
j'avais mis au départ.

Et maintenant, ca marche!

Aucune idée de la raison de ce miracle informatique. Les programmes
deviendraient-ils capricieux?

Si quelqu'un a une explication... je suis preneur.

En tout cas, merci de ton aide FFO.