Macro pb avec End With

Bonjour,

Je suis entrain de faire une petite macro...

mais j'ai une erreur de compilation avec End With???

L'objectif de la macro est de colorer une partie de la dernière ligne si une cellule contenu dans cette dernière ligne est différente de zéro

voici mon code

' Macro1 Macro

' Macro enregistrée le 23/12/2008 par JBonneva

Dim DerLig As Long, Lig As Long

With Sheets("Suivi 15 & 7")

'Récupérer la dernière ligne de la feuille

DerLig = Selection("A65536").End(xlUp).Row

If .Range("AM" & Lig).Value = "0" Then Else: .Range("A:AR" & Lig).Select

.Range("A:AR" & Lig).Activate

With Selection.Interior

.ColorIndex = 36

.Pattern = xlSolid

End With

End Sub

Si il faut c un qqc ridicule qui me coince mais je n'y connais rien...

Merci d'avance pour votre aide.

Jerome

Bonsoir,

C'est dans ton IF .. que le pb se situe.

Essaye ceci :

Macro1 Macro
' Macro enregistrée le 23/12/2008 par JBonneva
Dim DerLig As Long, Lig As Long
With Sheets("Suivi 15 & 7")
'Récupérer la dernière ligne de la feuille
DerLig = .Range("A65536").End(xlUp).Row
If .Range("AM" & Lig).Value = "0" Then
With .Range("A:AR" & Lig).Interior
.ColorIndex = 36
.Pattern = xlSolid
End With
End If
End Sub

Amicalement

Dan

Salut le forum

Dan, il te manque quand même un End With

Sub Macro1()
' Macro enregistrée le 23/12/2008 par JBonneva
Dim DerLig As Long, Lig As Long

With Sheets("Suivi 15 & 7")
  'Récupérer la dernière ligne de la feuille
  DerLig = .Range("A65536").End(xlUp).Row
    If .Range("AM" & Lig).Value = "0" Then
      With .Range("A:AR" & Lig).Interior
        .ColorIndex = 36
        .Pattern = xlSolid
      End With
    End If
End With
End Sub

En décalant le texte d'une macro on voit plus facilement la structure.

Joyeuses Fêtes à tous

Mytå

Edit Dan : Oups,... juste Myta, merci pour ta correction.

Re-édtion With .Range("A" & Lig & ":AR" & Lig).Interior

Rebonsoir

La macro ne fonctionne pas, en faite je me suis aidé du problème sur une macro que vous avez dans le lien ci dessous

https://forum.excel-pratique.com/viewtopic.php?t=8966&highlight=macro+bouton

mais je ne m'en sors pas.

J'ai inséré le bouton 1 car par un clic je souhaiterais qu'il me mette sous la bonne mise en forme (cad surlignée en jaune la dernière ligne de A:AR) si et ssi la cellule AM de la dernière ligne est>à 0.

J'aurais pu faire via la mise en forme conditionnelle mais je souhaite explorer VBA... c'est pas gagné...lol

Je pars me coucher je regarderai demain si qq'1 a pu m'aider.

Merci d'avance

Cdlt

Jerome

Salut le forum

JBONNEVAL, un fichier serait beaucoup plus explicit, on travaille à l'aveuglette.

Tu n'as qu'à cliquer sur ce lien : Joindre un fichier pour que l'on puisse t'aider, et recopier l'adresse sur ta ficelle.

Joyeuses Fêtes à tous

Mytå

re,

....si la cellule AM de la dernière ligne est>à 0.

Dans ta macro tu parles de =0 --> If .Range("AM" & Lig).Value = "0" tandis que dans ton message tu parles de > 0

Modifie le code par --> If .Range("AM" & Lig).Value > "0"

Si pb place un fichier ce sera plus facile.

Amicalement

Dan

Yes ca marche!

Merci pour votre aide!

Voici le programme final

' Macro1 Macro

' Macro enregistrée le 23/12/2008 par JBonneva

Dim DerLig As Long, Lig As Long

With Sheets("Suivi 15 & 7")

'Récupérer la dernière ligne de la feuille

DerLig = .Range("A65536").End(xlUp).Row

'Pour chaque ligne

For Lig = DerLig To DerLig

If .Range("AM" & Lig).Value > "0" Then

.Range("A" & Lig & ": AR" & Lig).Select

.Range("A" & Lig & ": AR" & Lig).Activate

With Selection.Interior

.ColorIndex = 36

.Pattern = xlSolid

End With

End If

Next Lig

End With

End Sub

re,

As-tu au moins essayé les solutions que l'on t'a données ?

Là tu reprends ton code avec les même erreurs...select, activate ....

Tu ajoutes --> For Lig = DerLig To DerLig. Tu peux expliquer le pourquoi de Lig ??

Dan

Re,

Oui j'ai bien sur utilisé vos conseil, mais suite au conseil de Myta 2008 10:18 pm j'étais coincé car j'avais une erreur sur ("A:AR" & Lig).

Par la suite je me suis apercu qu'il y avait l'information suivante:

With .Range("A" & Lig & ":AR" & Lig).Interior

Là tu reprends ton code avec les même erreurs...select, activate ....

Le programme fonctionne bien avec select, activate ... Pourquoi dis tu que select et activate sont des erreurs dans mon pg?

Tu ajoutes --> For Lig = DerLig To DerLig. Tu peux expliquer le pourquoi de Lig ??

J'ai repris bêtement le prgoramme qu'il y avait sur le forum. Mais en effet je peux remplacer cette ligne par Lig=Derlig.

Merci pour tous!

Cdlt

Jerome

re,

Il faut éviter les select et activate quand cela ne sert pas. Cela ralentit l'exécution.

dans ton code "lig" ne sert à rien (à moins que tu récupères cette information d'une autre macro).

Remplace :

For Lig = DerLig To DerLig 
If .Range("AM" & Lig).Value > "0" Then 
.Range("A" & Lig & ": AR" & Lig).Select 
.Range("A" & Lig & ": AR" & Lig).Activate 

par

If .Range("AM" & derlig).Value > "0" Then 
.Range("A" & derlig & ": AR" & derlig)

ensuite enlève --> NEXT LIG

Amicalement

Dan

Re,

Tu as raison concernant l'utilité de "Lig".

Mais ca ne fonctionne pas si je ne met pas .select et .activate a la fin de la ligne de code:

.Range("A" & derlig & ": AR" & derlig).

Serais tu pq?

Jerome

re,

je vois un point après ton instruction....

Ta macro corrigée

Sub test()
Dim DerLig As Long
With Sheets("Suivi 15 & 7")
DerLig = .Range("A65536").End(xlUp).Row
If .Range("AM" & DerLig).Value > "0" Then
.Range("A" & DerLig & ":AR" & DerLig).Interior.ColorIndex = 36
End If
End With
End Sub

Dan

en effet ta ligne de code fonctionne bien aussi.

Merci de ton retour ca me permet d'apprendre à écrire du code autrement.

Bonne fete

Jerome

Rechercher des sujets similaires à "macro end"