Condition relative dans une macro excel
Résolu
Patsy80
-
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
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
A voir également:
- Condition relative dans une macro excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Word et excel gratuit - Guide
3 réponses
bonjour
Sub effacer_relatif()
lig = ActiveCell.Row
Range(Cells(lig, 2), Cells(lig, 11)).ClearContents
End Sub
Sub effacer_relatif()
lig = ActiveCell.Row
Range(Cells(lig, 2), Cells(lig, 11)).ClearContents
End Sub
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
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
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)
si tu veux te lancer progressivement en VBA:
http://www.info-3000.com/
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/