Condition relative dans une macro excel

Résolu
Patsy80 -  
 Patsy80 -
Bonjour,

Je suis à la recherche d'une macro qui me permette d'établir une sorte de relativité entre la cellule sélectionnée et la macro à effectuer. Je précise :

Si B3 sélectionné alors effacer (B3:K3)
Si B4 sélectionné alors effacer (B4:K4)
Si B5 sélectionné alors effacer (B5:K5)

Etc. J'ai environ 360 lignes à faire individuellement et je ne me vois pas enregistrer une macro par ligne.
Précision, je suis débutante dans les macro.

Merci à l'avance pour vos solutions !

Patsy80

3 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonjour
    Sub effacer_relatif()
    lig = ActiveCell.Row
    Range(Cells(lig, 2), Cells(lig, 11)).ClearContents
    End Sub
    1
  2. Patsy80
     
    Bonjour Michel et merci bcp pour cette réponse, ça marche super.

    Je pensais m'en sortir seule pour la suite mais j'avoue que je sèche encore.

    Après avoir effacé ma ligne, je dois y remettre des 3 formules issues d'un autre onglet, une fois de plus par ligne.

    Voici ce que donne ma macro pour une ligne donnée :

    Range("B3:K3").Select
    Selection.ClearContents
    Range("H3").Select
    ActiveCell.FormulaR1C1 = "=calc!RC[8]"
    Range("I3").Select
    ActiveCell.FormulaR1C1 = "=calc!RC[8]"
    Range("J3").Select
    ActiveCell.FormulaR1C1 = "=calc!RC[8]"
    Range("J4").Select
    End Sub

    J'ai remplacé le début par la formule de Michel mais pour la suite, j'ai essayé ça mais ça ne marche pas.

    lig = ActiveCell.Row
    Range(Cells(lig, 2), Cells(lig, 11)).ClearContents
    Range(Cells(lig, 7)).Select
    ActiveCell.FormulaR1C1 = "=calc!RC[8]"
    Range(Cells(lig, 8)).Select
    ActiveCell.FormulaR1C1 = "=calc!RC[8]"
    Range(Cells(lig, 9)).Select
    ActiveCell.FormulaR1C1 = "=calc!RC[8]"
    Range(Cells(lig, 2)).Select
    End Sub

    Si quelqu'un a une idée? Après, je ne vous embète plus !!

    Merci à l'avance

    Patsy
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bonjour

      tu n'as besoin de "range" si tu t'occupes que d'une cellule
      Range(Cells(lig, 7)) ---->Cells(lig, 7)
      ta macro fonctionnera

      par contre pour une zone on utilise range
      range(cellule debut, cellule fin)

      pour ta macro en VBA (et non à l'enregistreur)

      Dim lig As Long
      lig = ActiveCell.Row
      Range(Cells(lig, 2), Cells(lig, 11)).ClearContents
      Range(Cells(lig, 7), Cells(lig, 9)).FormulaR1C1 = "=calc!Rc[8]"
      End Sub


      si tu veux te lancer progressivement en VBA:
      http://www.info-3000.com/
      0
  3. Patsy80
     
    Michel, la page n'est pas assez grande pour la taille de mon MERCI mais si ce n'est peut-être pas grand chose pour toi, c'est 80 % de changement dans mes journées de travail !!!

    MERCI et bon week !!

    Patsy
    0