Erreur "Select" Range pour Recalcul

Bonjour tout le monde :) j'espère que vous allez bien.

En vue de recalculer/mettre à jour des cellules sur ma feuille (passage obligatoir!), j'ai écris ce code qui me donne une erreur de selection que je n'arrive pas à comprendre ! :

Dim b As Integer, DerLig66 As Integer
DerLig66 = Sheets("RESULTAT").Range("D" & Rows.Count).End(xlUp).row
For b = 2 To DerLig66
Sheets("RESULTAT").Cells(b, 4).Select
Sheets("RESULTAT").Cells(b, 4).Calculate
Next b

Il me dit en fait : la méthode Select de la classe Range a échoué

Merci pour votre coup de pousse matinal :)

bonjour,

l'utilisation de select n'est pas une bonne idée, ça ralentit le traitement et on peut facilement s'en passer

Select permet de sélectionner un objet et le rendre actif. S'il y a une hiérarchie d'objets comme dans le cas présenté dans ton code, il faut sélectionner les objets selon la hiérarchie.

sheets("RESULTAT").select 'ou activate
cells("B4").select
Sheets("RESULTAT").Cells(b, 4).Select 'pourrait fonctionner si la feuille active au moment de l'exécution de cette instruction est RESULTAT

Si on utilise .select, l'idée est en principe d'utiliser selection par la suite pour référer à l'objet sélectionné.

selection.Calculate

Tu peux simplement te passer de tous ces select et activate, en indiquant précisément l'objet dont tu veux utiliser une méthode et une propriété.

Edit : je pensais avoir mis ceci ...

Dim DerLig66 As Integer
DerLig66 = Sheets("RESULTAT").Range("D" & Rows.Count).End(xlUp).row
Sheets("RESULTAT").range("D2:D" & Derlig66).Calculate

Merci H2so4 pour ton appui :)

Jusque là ça ne fonctionne pas ... j'ai modifié le code de la sorte :

Dim b As Integer, DerLig66 As Integer
DerLig66 = Sheets("RESULTAT").Range("D" & Rows.Count).End(xlUp).row
Sheets("RESULTAT").Select
For b = 2 To DerLig66
Sheets("RESULTAT").Cells(b, 4).Select
Selection.Calculate
Next b

les cellules ne sont pas mises à jours en fait !!

Bonjour le fil

@Cameleon1881, tu ne semble pas comprendre ce que h2so4 te dit

Bien que je ne comprenne pas l'utilité d'un tel code, nul besoin de Activate ou de Select

Sub test()
  Dim b As Integer, DerLig66 As Integer
  With Sheets("RESULTAT")
    DerLig66 = .Range("D" & Rows.Count).End(xlUp).Row
    For b = 2 To DerLig66
      .Cells(b, 4).Calculate
    Next b
  End With
End Sub

A+

Bonjour Bruno, merci pour ta contribution :)

j'ai essayé ton code mais non ça ne marche pas ... pourtant ça à l'air d'être correct.

Faut il vraiment que la Feuil "RESULTAT" soit activée lors le l'execution du code là ou peu importe ?*

y a moyen de faire autrement ? Bruno et H2 ?

Me

Re,

j'ai essayé ton code mais non ça ne marche pas

"ça ne marche pas" ne veut rien dire

Qu'est-ce qui ne fonctionne pas à tes yeux ?

Que voudrais-tu avoir et que tu n'as pas ?

Etc...

Merci d'être explicite dans les réponses STP

A+

Non non ça marche en fait ... c'est moi qui me suis trompé les gars !

En fait à une certaine manoeuvre, les cellules dans la colonne D sont devenue des valeurs cad sans formule. Donc c'est évident que .Calculate ne fonctionne plus.

Donc finalement c'est résolu !

Merci beaucoup à vous deux

Me

Rechercher des sujets similaires à "erreur select range recalcul"