Faire suivre une macro si ajout de colonne

Bonjour à tout le monde,

Je n'arrive pas à rendre variable une plage de cellule qui s'efface.

Ma macro actuelle efface une plage :

Sub reset_ordre()
'' reset_ORDRE Macro

    Sheets("plan charge").Select
    Range("Ax29:Ax86").Select
    Selection.ClearContents

End Sub

Sauf que dans ce fichier excel qui est utilisé par plusieurs personne, des ajouts de colonnes ou suppression de colonne font effacer la mauvaise plage. par exemple si ajout de colonne, la plage AX ne correspond plus a ce que je veux effacer.

Je souhaite que la "selection" suive le mot "Ordre" qui sera toujours situé dans la même colonne au dessus de la plage.

Merci par avance

Bonjour Flexcel

Il suffit de nommer la plage à effacer et d'appeler celle-ci

Sub reset_ordre()
  ' reset_ORDRE Macro
    Sheets("plan charge").Range("NomPlageAEffacer").ClearContents
End Sub

l'ajout ou suppression de colone n'aura alors aucun effet

A+

Bonjour,

Sub Reset_ordre()

Dim DerniereLigne As Integer
Dim CellOrdre As Range

    With Sheets("Plan de charge")
         Set CellOrdre = .Cells.Find("Ordre", LookAt:=xlPart)
         If Not CellOrdre Is Nothing Then
            DerniereLigne = .Cells(.Rows.Count, CellOrdre.Column).End(xlUp).Row
            .Range(CellOrdre.Offset(1, 0), CellOrdre.Offset(DerniereLigne - CellOrdre.Row, 0)).ClearContents
         End If
         Set CellOrdre = Nothing
    End With

End Sub

Merci pour vos réponses

Eric Kergresse, la macro fonctionne mais s'il l'on clique 2 fois sur le bouton macro il efface le mot Ordre et ensuite il n'est plus possible que la macro fonctionne

BrunoM45 je n'arrive pas à trouver la syntaxe pour la plage car ma variable est la colonne, donc je ne peux écrire AX29:AX86 ?

si met
Dim plage as variant
Set Plage ="ax23:ax86"
Sheets("plan charge").Plage.ClearContents
ça me met objet requis
Sub Reset_ordre()

Dim DerniereLigne As Integer
Dim CellOrdre As Range

    With Sheets("Plan de charge")
         Set CellOrdre = .Cells.Find("Ordre", LookAt:=xlPart)
         If Not CellOrdre Is Nothing Then
            DerniereLigne = .Cells(.Rows.Count, CellOrdre.Column).End(xlUp).Row
            If DerniereLigne > CellOrdre.Row Then
               .Range(CellOrdre.Offset(1, 0), CellOrdre.Offset(DerniereLigne - CellOrdre.Row, 0)).ClearContents
            End If
         End If
         Set CellOrdre = Nothing
    End With

End Sub

Bonjour Bruno

Re,

Autre philosophie qu'Eric que je salue

A+

Eric Kergresse Merci beaucoup !

BrunoM45 merci je ne connaissait pas cette méthode qui m'a l'air plus simple ! merci pour ce partage

Bonne journée à vous

Rechercher des sujets similaires à "suivre macro ajout colonne"