Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Range(...).Select -> Erreur 400

  • Initiateur de la discussion Initiateur de la discussion FloreR
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

FloreR

Guest
Bonjour à tous,

Je dispose d'une base de données dans un onglet de mon fichier excel. J'ai créé une macro qui me permet de recopier dans un autre onglet les seules lignes de cette base de données avec lesquelles je veux effectuer mon calcul (et qui ont auparavant été sélectionnées à l'aide d'un "X" dans la colonne indiquée pour). (Genre, en tout, j'ai 558 lignes renseignées, et je peux en sélectionner autant que je veux.)

Selon le nombre de données avec lesquelles je veux travailler (entre 1 et 558), mon second onglet va présenter un nombre de lignes "remplies" plus ou moins élevé. Je dois donc lui faire insérer des lignes, ou en supprimer, en fonction du cas précédent de calcul. Ca, ce n'est pas un problème.

Ce qui m'embête, c'est que, une fois que j'ai ajouté ou supprimé le nombre de lignes qu'il me faut et que j'ai tout recopié, ma "mise en page" est un peu "abîmée"... En gros, l'insertion et la suppression de lignes n'a pas respecté les bordures de cellules que j'avais mises en place, et je veux rattraper le coup en toute fin de macro. (J'avais créé un truc qui le faisait automatiquement à chaque insertion de ligne, mais c'était beaucoup trop lourd, et en plus, ça faisait potentiellement 557 fois un travail qui était effacé au coup suivant...)

Donc tout simplement, j'ai tenté le code suivant :

Sheets("Minéraux retenus").Range(Cells(7, 5), Cells(j - 3, 7)).Select
'With Selection.Borders(xlEdgeLeft)
'.LineStyle = xlContinuous
'.ColorIndex = xlAutomatic
'.TintAndShade = 0
'.Weight = xlThin
etc etc, avec tout ce qu'il me faut pour faire une belle mise en page.

(NB : j est un curseur défini auparavant dans la macro, et qui est lié au nombre de lignes que j'ai recopiées de ma base de données.)

Mais ça ne marche pas ! :-(
J'ai testé en mode pas-à-pas, et l'erreur vient de la ligne Range(...).Select
Comme j'ai déjà utilisé la même grammaire pour un autre code qui tourne (lui !), je ne vois vraiment pas où se trouve le problème...

Merci d'avance pour votre aide !
 
Re : Range(...).Select -> Erreur 400

Bonjour,

essaye peutêtre comme ceci :
Code:
With Sheets("Minéraux retenus")
    .Range(.Cells(7, 5), .Cells(j - 3, 7)).Select
End With

Attention, la feuille "Sheets("Minéraux retenus")" doit être active...

bon après midi
@+
 
Re : Range(...).Select -> Erreur 400

Bonjour FloreR, salut Pierrot,

Pour sélectionner un Range, il faut que sa feuille soit activée...

Code:
With Sheets("Minéraux retenus")
    .Visible = True 'si besoin est...
    .Activate
    .Range(.Cells(7, 5), .Cells(j - 3, 7)).Select
End With
ou aussi :

Code:
With Sheets("Minéraux retenus")
    .Visible = True 'si besoin est...
    Application.Goto .Range(.Cells(7, 5), .Cells(j - 3, 7))
End With

A+
 
Re : Range(...).Select -> Erreur 400

YES ! Ca marche !!!

Merci !!! 🙂

Mais encore une question : pourquoi mon code plantait-il ? (Alors que, je répète, la même syntaxe fonctionne dans une autre macro...)

Des fois, j'ai vraiment du mal à comprendre comment fonctionne excel...
 
Re : Range(...).Select -> Erreur 400

Re,

cela dépend si ta feuille est active ou pas, également si ton code est placé dans le module d'une autre feuille, ca va également coincer...

bonne soirér
@+
 
Re : Range(...).Select -> Erreur 400

Merci pour vos réponses !

La feuille "Minéraux retenus" était bien activée : c'est la première ligne de mon code : Sheets("Minéraux retenus").Activate

Par contre, je pense que le problème, comme tu le dis, Pierrot, vient du fait que ma macro est enregistrée dans un module qui ne correspond pas à la feuille dans laquelle je sélectionnais le range.

En fait, je m'aperçois ainsi que je ne maîtrise pas du tout ces fameux "modules" et autres "userform", "workbook"... enfin, bref tout ce qui se trouve dans la petite fenêtre en haut à gauche de VBA... En général, je laisse mes codes là où ils sont mis par défaut, mais quand je crée une macro, généralement, je place le code un peu au pif... D'où, peut-être, mon problème de tout-à-l'heure ? Si vous avez deux trois conseils à me donner là-dessus, je suis intéressée.

Merci encore une fois !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
687
Réponses
7
Affichages
171
Réponses
43
Affichages
718
Réponses
18
Affichages
597
Réponses
19
Affichages
861
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…