XL 2013 activesheet vs sheets

cyrikou

XLDnaute Occasionnel
Bonjour,

j'ai une macro qui s'exécute sur deux feuilles, elle a pour but d'effacer des plages de cellules

voici le code :

Code:
y = 7
x = 3
d = 1


'activesheet

ActiveSheet.Range(Cells(y, x), Cells(y + 30, x + 1)).ClearContents


'sheet résultats
y = 7
x1 = 3
x2 = x1 + 3

For e = 1 To 28

Sheets("R" & d).Range(Cells(y, x1), Cells(y + 30, x1 + 1)).ClearContents '===> ca plante ici

Sheets("R" & d).Range(Cells(y, x2), Cells(y + 30, x2 + 3)).ClearContents

y = y + 39
x1 = Cells(44, 1).Value
x2 = x1 + 3

Next e

Tout fonctionne jusqu'à "Sheets ("R"&d)". et visiblement c'est sur le range que ça bogue.
Je pense que c'est une erreur de syntaxe, si vous avez une idée, merci d'avance.
 

pierrejean

XLDnaute Barbatruc
Re : activesheet vs sheets

Bonjour cyrikou

C'est a mon avis la valeur de x1 qui pose probleme
a un moment Cells(44, 1).Value devient vide par la ligne
Sheets("R" & d).Range(Cells(y, x1), Cells(y + 30, x1 + 1)).ClearContents
Si tu nous disais ce que tu cherche à faire avec un petit fichier exemple on pourrait t'aiguiller sur un code correct
 

cyrikou

XLDnaute Occasionnel
Re : activesheet vs sheets

Bonjour Pierre et Tatiak,

le code sur l'activesheet fonctionne sans problèmes, c'est dès qu'il faut travailler sur la feuille R1 que cela plante, de plus je me suis trompé sur le code que je vous ai donné, en effet les variables, x,y, x1,x2 et d s'initialisent sur des cellules, pour le coup la cellule (44,1) à la valeur de 3. A chaque passage de la boucle, je reinitialise x,x1 et x2 par truchement.

Cette macro est faites pour effacer des plages de cellules et utilisables pour différentes feuilles.

J'ai mis une fenêtre espion et cela me dis que " : Visible : <Impossible de lire la propriété Visible de la classe Sheets.> "

:confused: kezako?
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : activesheet vs sheets

Bonsoir
Vous ne pouvez pas pas construire une plage d'une feuille spécifiée délimitée par des de cellules d'une autre feuille. En l'occurrence des cellules de la feuille active non précisée.
 

cyrikou

XLDnaute Occasionnel
Re : activesheet vs sheets

Ben la ce n'est pas du tout le cas. La cellule (44,1) n'est utilisée qu'à l'initialisation et la valeur de cette cellule ne varie pas pendant la procédure, en l'occurrence elle vaut 3. J'ai déjà utilisé cette procédure ailleurs mais pas avec le range(cells1,cells2) et ça fonctionne très bien.
 

cyrikou

XLDnaute Occasionnel
Re : activesheet vs sheets

Visiblement cella provient du"range" qui ne voit pas les cellules, en gros impossible de définir la plage sur l'autre feuille ("R"&d).

Ma question est plus générale : comment faire pour travailler sur deux feuilles distinctes avec range.

J'ai joint un fichier en reprenant la macro et la structure de mon fichier initial.
Cela plante au même endroit.
 

Pièces jointes

  • Classeur1.xlsm
    26.6 KB · Affichages: 38
  • Classeur1.xlsm
    26.6 KB · Affichages: 25

Papou-net

XLDnaute Barbatruc
Re : activesheet vs sheets

Bonsoir pierrejean, tatiak, Dranreb,
Bonsoir cyrikou,

En réécrivant la boucle comme ceci:

Code:
For e = 1 To 3
  With Sheets("R" & d)
    .Range(.Cells(y, x1), .Cells(y, x1 + 1)).ClearContents
    .Range(.Cells(y, x2), .Cells(y, x2 + 1)).ClearContents
    y = y + 21
    x1 = xt
  End With
Next e
L'erreur se produit sur la ligne suivante. C'est normal, car x2 est vide (pas d'affectation de valeur dans le code). Je pense que si tu résouts ton problème de variables (que toi seul peut comprendre sans autre explication) la deuxième ligne d'effacement devrait fonctionner également.

Cordialement.
 

cyrikou

XLDnaute Occasionnel
Re : activesheet vs sheets

Milles excuses, je ne sais pas ce que j'ai fabriqué, j'ai modifié le code et j'avais oublié de supprimer x2 et la sa fonctionne. Je ne sais pas si cela fonctionnera sur mon code original mais je vais voir.
 

Pièces jointes

  • Classeur1.xlsm
    26.3 KB · Affichages: 33
  • Classeur1.xlsm
    26.3 KB · Affichages: 34

Statistiques des forums

Discussions
312 321
Messages
2 087 243
Membres
103 497
dernier inscrit
JP9231