Je sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
Je sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
Je sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
Je sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
S'il n'y a pas de discontinuité dans les données (lignes vides) et pour la plage
nommée "tablo"
Rows([tablo].Find("*", , , , , xlPrevious).Row - 1).Select
Pour le reste de la question, comme je sens pas très bien le truc, je
m'abstiendrais...
AV
Je sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
S'il n'y a pas de discontinuité dans les données (lignes vides) et pour la plage
nommée "tablo"
Rows([tablo].Find("*", , , , , xlPrevious).Row - 1).Select
Pour le reste de la question, comme je sens pas très bien le truc, je
m'abstiendrais...
AV
Je sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
S'il n'y a pas de discontinuité dans les données (lignes vides) et pour la plage
nommée "tablo"
Rows([tablo].Find("*", , , , , xlPrevious).Row - 1).Select
Pour le reste de la question, comme je sens pas très bien le truc, je
m'abstiendrais...
AV
Merci Alain pour la réponse, mais cela ne convient pas car il y a effectivement des
lignes vides.
En fait, dans le cadre de ma seconde question, je voulais réaliser la chose
suivante (peut-être trop compliqué ?) :
- Retrouver la dernière ligne du tableau (je sais faire).
- Retrouver également l'avant dernière ligne contenant des données (ce n'est
donc pas l'avant dernière ligne du tableau)..
- Sélectionner la plage entre les deux.
- Supprimer les lignes de cette plage.
- Recréer 2 lignes vides.
JacquesJe sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
S'il n'y a pas de discontinuité dans les données (lignes vides) et pour la plage
nommée "tablo"
Rows([tablo].Find("*", , , , , xlPrevious).Row - 1).Select
Pour le reste de la question, comme je sens pas très bien le truc, je
m'abstiendrais...
AV
Merci Alain pour la réponse, mais cela ne convient pas car il y a effectivement des
lignes vides.
En fait, dans le cadre de ma seconde question, je voulais réaliser la chose
suivante (peut-être trop compliqué ?) :
- Retrouver la dernière ligne du tableau (je sais faire).
- Retrouver également l'avant dernière ligne contenant des données (ce n'est
donc pas l'avant dernière ligne du tableau)..
- Sélectionner la plage entre les deux.
- Supprimer les lignes de cette plage.
- Recréer 2 lignes vides.
Jacques
Je sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
S'il n'y a pas de discontinuité dans les données (lignes vides) et pour la plage
nommée "tablo"
Rows([tablo].Find("*", , , , , xlPrevious).Row - 1).Select
Pour le reste de la question, comme je sens pas très bien le truc, je
m'abstiendrais...
AV
Merci Alain pour la réponse, mais cela ne convient pas car il y a effectivement des
lignes vides.
En fait, dans le cadre de ma seconde question, je voulais réaliser la chose
suivante (peut-être trop compliqué ?) :
- Retrouver la dernière ligne du tableau (je sais faire).
- Retrouver également l'avant dernière ligne contenant des données (ce n'est
donc pas l'avant dernière ligne du tableau)..
- Sélectionner la plage entre les deux.
- Supprimer les lignes de cette plage.
- Recréer 2 lignes vides.
JacquesJe sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
S'il n'y a pas de discontinuité dans les données (lignes vides) et pour la plage
nommée "tablo"
Rows([tablo].Find("*", , , , , xlPrevious).Row - 1).Select
Pour le reste de la question, comme je sens pas très bien le truc, je
m'abstiendrais...
AV
Bonjour Benjamin,
Merci de ta réponse.
Même si je ne comprends pas tout, l'idée de base me paraît excellente. En revanche j'ai
quelques soucis avec la macro.
Voici ton code que j'ai recopié :
Sub supprimer_Ligne()
lrow1 = [A65536].End(xlUp).Row
lrow2 = Cells(lrow1 - 1, 1).End(xlUp).Row
If lrow2 > lrow1 + 2 Then
Rows(Evaluate(lrow2 + 3) & ":" & Evaluate(lrow1 - 1)).Delete
ElseIf lrow2 = lrow1 + 2 Then
Exit Sub
ElseIf lrow2 = lrow1 + 1 Then
Cells(lrow2 + 1, 1).EntireRow.Insert shift:=xlDown
Else:
Range(Cells(lrow2 + 1, 1), Cells(lrow2 + 2, 1)).EntireRow.Insert shift:=xlDown
End If
End Sub
En fait la macro fonctionne, mais elle ajoute 2 lignes alors que j'en ai déjà 10.
Ce que je souhaite, c'est partir des 10 lignes vides entre l'avant dernière et la
dernière et passer à 2 lignes vides.
Pour ce faire, j'ai considéré que la ligne de l'avant dernière est inférieure à celle de
la dernière donc j'ai changé la ligne suivante :
If lrow2 > lrow1 + 2 Then par If lrow2 < lrow1 + 2 Then pour faire réagir la
première condition : effacement d'un certain nombre de lignes.
A ce moment là, la macro bloque sur la ligne 4 "Row(Evaluate...." avec le commentaire
suivant : "propriété ou méthode non gérée par cet objet". Est ce que tu vois une erreur sur
cette ligne ? Je n'ai jamais utilisée ce genre de formule.
Merci d'avance.
Jacques.Bonjour Jacques,
pourquoi ne pas faire 2 recherches de dernières lignes en utilisant la
première pour lancer la seconde de la ligne du dessus ?
Donc tu te fait une première recherche lrow1 = [A65536].end(xlup).row
puis une seconde Lrow2 = cells(lrow1 - 1,1).end(xlup).row
pour finir un petit,
if lrow2 > lrow1 + 2 then
rows(evaluate(lrow2+3) & ":" & evaluate(lrow1-1) ).delete
elseif lrow2 = lrow1+2 then
exit sub
elseif lrow2=lrow1+1 then
cells(lrow2+1,1).entirerow.insert shift:=xldown
else:
range(cells(lrow2+1,1),cells(lrow2+2,1)).entirerow.insert shift:=xldwon
end if
je pense que cela dervrait correspondre en adaptant à ton cas.
Cordialement
BenjaminMerci Alain pour la réponse, mais cela ne convient pas car il y a effectivement des
lignes vides.
En fait, dans le cadre de ma seconde question, je voulais réaliser la chose
suivante (peut-être trop compliqué ?) :
- Retrouver la dernière ligne du tableau (je sais faire).
- Retrouver également l'avant dernière ligne contenant des données (ce n'est
donc pas l'avant dernière ligne du tableau)..
- Sélectionner la plage entre les deux.
- Supprimer les lignes de cette plage.
- Recréer 2 lignes vides.
JacquesJe sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
S'il n'y a pas de discontinuité dans les données (lignes vides) et pour la plage
nommée "tablo"
Rows([tablo].Find("*", , , , , xlPrevious).Row - 1).Select
Pour le reste de la question, comme je sens pas très bien le truc, je
m'abstiendrais...
AV
Bonjour Benjamin,
Merci de ta réponse.
Même si je ne comprends pas tout, l'idée de base me paraît excellente. En revanche j'ai
quelques soucis avec la macro.
Voici ton code que j'ai recopié :
Sub supprimer_Ligne()
lrow1 = [A65536].End(xlUp).Row
lrow2 = Cells(lrow1 - 1, 1).End(xlUp).Row
If lrow2 > lrow1 + 2 Then
Rows(Evaluate(lrow2 + 3) & ":" & Evaluate(lrow1 - 1)).Delete
ElseIf lrow2 = lrow1 + 2 Then
Exit Sub
ElseIf lrow2 = lrow1 + 1 Then
Cells(lrow2 + 1, 1).EntireRow.Insert shift:=xlDown
Else:
Range(Cells(lrow2 + 1, 1), Cells(lrow2 + 2, 1)).EntireRow.Insert shift:=xlDown
End If
End Sub
En fait la macro fonctionne, mais elle ajoute 2 lignes alors que j'en ai déjà 10.
Ce que je souhaite, c'est partir des 10 lignes vides entre l'avant dernière et la
dernière et passer à 2 lignes vides.
Pour ce faire, j'ai considéré que la ligne de l'avant dernière est inférieure à celle de
la dernière donc j'ai changé la ligne suivante :
If lrow2 > lrow1 + 2 Then par If lrow2 < lrow1 + 2 Then pour faire réagir la
première condition : effacement d'un certain nombre de lignes.
A ce moment là, la macro bloque sur la ligne 4 "Row(Evaluate...." avec le commentaire
suivant : "propriété ou méthode non gérée par cet objet". Est ce que tu vois une erreur sur
cette ligne ? Je n'ai jamais utilisée ce genre de formule.
Merci d'avance.
Jacques.
Bonjour Jacques,
pourquoi ne pas faire 2 recherches de dernières lignes en utilisant la
première pour lancer la seconde de la ligne du dessus ?
Donc tu te fait une première recherche lrow1 = [A65536].end(xlup).row
puis une seconde Lrow2 = cells(lrow1 - 1,1).end(xlup).row
pour finir un petit,
if lrow2 > lrow1 + 2 then
rows(evaluate(lrow2+3) & ":" & evaluate(lrow1-1) ).delete
elseif lrow2 = lrow1+2 then
exit sub
elseif lrow2=lrow1+1 then
cells(lrow2+1,1).entirerow.insert shift:=xldown
else:
range(cells(lrow2+1,1),cells(lrow2+2,1)).entirerow.insert shift:=xldwon
end if
je pense que cela dervrait correspondre en adaptant à ton cas.
Cordialement
Benjamin
Merci Alain pour la réponse, mais cela ne convient pas car il y a effectivement des
lignes vides.
En fait, dans le cadre de ma seconde question, je voulais réaliser la chose
suivante (peut-être trop compliqué ?) :
- Retrouver la dernière ligne du tableau (je sais faire).
- Retrouver également l'avant dernière ligne contenant des données (ce n'est
donc pas l'avant dernière ligne du tableau)..
- Sélectionner la plage entre les deux.
- Supprimer les lignes de cette plage.
- Recréer 2 lignes vides.
Jacques
Je sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
S'il n'y a pas de discontinuité dans les données (lignes vides) et pour la plage
nommée "tablo"
Rows([tablo].Find("*", , , , , xlPrevious).Row - 1).Select
Pour le reste de la question, comme je sens pas très bien le truc, je
m'abstiendrais...
AV
Bonjour Benjamin,
Merci de ta réponse.
Même si je ne comprends pas tout, l'idée de base me paraît excellente. En revanche j'ai
quelques soucis avec la macro.
Voici ton code que j'ai recopié :
Sub supprimer_Ligne()
lrow1 = [A65536].End(xlUp).Row
lrow2 = Cells(lrow1 - 1, 1).End(xlUp).Row
If lrow2 > lrow1 + 2 Then
Rows(Evaluate(lrow2 + 3) & ":" & Evaluate(lrow1 - 1)).Delete
ElseIf lrow2 = lrow1 + 2 Then
Exit Sub
ElseIf lrow2 = lrow1 + 1 Then
Cells(lrow2 + 1, 1).EntireRow.Insert shift:=xlDown
Else:
Range(Cells(lrow2 + 1, 1), Cells(lrow2 + 2, 1)).EntireRow.Insert shift:=xlDown
End If
End Sub
En fait la macro fonctionne, mais elle ajoute 2 lignes alors que j'en ai déjà 10.
Ce que je souhaite, c'est partir des 10 lignes vides entre l'avant dernière et la
dernière et passer à 2 lignes vides.
Pour ce faire, j'ai considéré que la ligne de l'avant dernière est inférieure à celle de
la dernière donc j'ai changé la ligne suivante :
If lrow2 > lrow1 + 2 Then par If lrow2 < lrow1 + 2 Then pour faire réagir la
première condition : effacement d'un certain nombre de lignes.
A ce moment là, la macro bloque sur la ligne 4 "Row(Evaluate...." avec le commentaire
suivant : "propriété ou méthode non gérée par cet objet". Est ce que tu vois une erreur sur
cette ligne ? Je n'ai jamais utilisée ce genre de formule.
Merci d'avance.
Jacques.Bonjour Jacques,
pourquoi ne pas faire 2 recherches de dernières lignes en utilisant la
première pour lancer la seconde de la ligne du dessus ?
Donc tu te fait une première recherche lrow1 = [A65536].end(xlup).row
puis une seconde Lrow2 = cells(lrow1 - 1,1).end(xlup).row
pour finir un petit,
if lrow2 > lrow1 + 2 then
rows(evaluate(lrow2+3) & ":" & evaluate(lrow1-1) ).delete
elseif lrow2 = lrow1+2 then
exit sub
elseif lrow2=lrow1+1 then
cells(lrow2+1,1).entirerow.insert shift:=xldown
else:
range(cells(lrow2+1,1),cells(lrow2+2,1)).entirerow.insert shift:=xldwon
end if
je pense que cela dervrait correspondre en adaptant à ton cas.
Cordialement
BenjaminMerci Alain pour la réponse, mais cela ne convient pas car il y a effectivement des
lignes vides.
En fait, dans le cadre de ma seconde question, je voulais réaliser la chose
suivante (peut-être trop compliqué ?) :
- Retrouver la dernière ligne du tableau (je sais faire).
- Retrouver également l'avant dernière ligne contenant des données (ce n'est
donc pas l'avant dernière ligne du tableau)..
- Sélectionner la plage entre les deux.
- Supprimer les lignes de cette plage.
- Recréer 2 lignes vides.
JacquesJe sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
S'il n'y a pas de discontinuité dans les données (lignes vides) et pour la plage
nommée "tablo"
Rows([tablo].Find("*", , , , , xlPrevious).Row - 1).Select
Pour le reste de la question, comme je sens pas très bien le truc, je
m'abstiendrais...
AV
Bonjour Jacques,
pourquoi ne pas faire 2 recherches de dernières lignes en utilisant la
première pour lancer la seconde de la ligne du dessus ?
Donc tu te fait une première recherche lrow1 = [A65536].end(xlup).row
puis une seconde Lrow2 = cells(lrow1 - 1,1).end(xlup).row
pour finir un petit,
if lrow2 > lrow1 + 2 then
rows(evaluate(lrow2+3) & ":" & evaluate(lrow1-1) ).delete
elseif lrow2 = lrow1+2 then
exit sub
elseif lrow2=lrow1+1 then
cells(lrow2+1,1).entirerow.insert shift:=xldown
else:
range(cells(lrow2+1,1),cells(lrow2+2,1)).entirerow.insert shift:=xldwon
end if
je pense que cela dervrait correspondre en adaptant à ton cas.
Cordialement
BenjaminMerci Alain pour la réponse, mais cela ne convient pas car il y a effectivement des
lignes vides.
En fait, dans le cadre de ma seconde question, je voulais réaliser la chose
suivante (peut-être trop compliqué ?) :
- Retrouver la dernière ligne du tableau (je sais faire).
- Retrouver également l'avant dernière ligne contenant des données (ce n'est
donc pas l'avant dernière ligne du tableau)..
- Sélectionner la plage entre les deux.
- Supprimer les lignes de cette plage.
- Recréer 2 lignes vides.
JacquesJe sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
S'il n'y a pas de discontinuité dans les données (lignes vides) et pour la plage
nommée "tablo"
Rows([tablo].Find("*", , , , , xlPrevious).Row - 1).Select
Pour le reste de la question, comme je sens pas très bien le truc, je
m'abstiendrais...
AV
Bonjour Jacques,
pourquoi ne pas faire 2 recherches de dernières lignes en utilisant la
première pour lancer la seconde de la ligne du dessus ?
Donc tu te fait une première recherche lrow1 = [A65536].end(xlup).row
puis une seconde Lrow2 = cells(lrow1 - 1,1).end(xlup).row
pour finir un petit,
if lrow2 > lrow1 + 2 then
rows(evaluate(lrow2+3) & ":" & evaluate(lrow1-1) ).delete
elseif lrow2 = lrow1+2 then
exit sub
elseif lrow2=lrow1+1 then
cells(lrow2+1,1).entirerow.insert shift:=xldown
else:
range(cells(lrow2+1,1),cells(lrow2+2,1)).entirerow.insert shift:=xldwon
end if
je pense que cela dervrait correspondre en adaptant à ton cas.
Cordialement
Benjamin
Merci Alain pour la réponse, mais cela ne convient pas car il y a effectivement des
lignes vides.
En fait, dans le cadre de ma seconde question, je voulais réaliser la chose
suivante (peut-être trop compliqué ?) :
- Retrouver la dernière ligne du tableau (je sais faire).
- Retrouver également l'avant dernière ligne contenant des données (ce n'est
donc pas l'avant dernière ligne du tableau)..
- Sélectionner la plage entre les deux.
- Supprimer les lignes de cette plage.
- Recréer 2 lignes vides.
Jacques
Je sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
S'il n'y a pas de discontinuité dans les données (lignes vides) et pour la plage
nommée "tablo"
Rows([tablo].Find("*", , , , , xlPrevious).Row - 1).Select
Pour le reste de la question, comme je sens pas très bien le truc, je
m'abstiendrais...
AV
Bonjour Jacques,
pourquoi ne pas faire 2 recherches de dernières lignes en utilisant la
première pour lancer la seconde de la ligne du dessus ?
Donc tu te fait une première recherche lrow1 = [A65536].end(xlup).row
puis une seconde Lrow2 = cells(lrow1 - 1,1).end(xlup).row
pour finir un petit,
if lrow2 > lrow1 + 2 then
rows(evaluate(lrow2+3) & ":" & evaluate(lrow1-1) ).delete
elseif lrow2 = lrow1+2 then
exit sub
elseif lrow2=lrow1+1 then
cells(lrow2+1,1).entirerow.insert shift:=xldown
else:
range(cells(lrow2+1,1),cells(lrow2+2,1)).entirerow.insert shift:=xldwon
end if
je pense que cela dervrait correspondre en adaptant à ton cas.
Cordialement
BenjaminMerci Alain pour la réponse, mais cela ne convient pas car il y a effectivement des
lignes vides.
En fait, dans le cadre de ma seconde question, je voulais réaliser la chose
suivante (peut-être trop compliqué ?) :
- Retrouver la dernière ligne du tableau (je sais faire).
- Retrouver également l'avant dernière ligne contenant des données (ce n'est
donc pas l'avant dernière ligne du tableau)..
- Sélectionner la plage entre les deux.
- Supprimer les lignes de cette plage.
- Recréer 2 lignes vides.
JacquesJe sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
S'il n'y a pas de discontinuité dans les données (lignes vides) et pour la plage
nommée "tablo"
Rows([tablo].Find("*", , , , , xlPrevious).Row - 1).Select
Pour le reste de la question, comme je sens pas très bien le truc, je
m'abstiendrais...
AV
Bonjour Benjamin,
Merci de ta réponse.
Même si je ne comprends pas tout, l'idée de base me paraît excellente. En revanche j'ai
quelques soucis avec la macro.
Voici ton code que j'ai recopié :
Sub supprimer_Ligne()
lrow1 = [A65536].End(xlUp).Row
lrow2 = Cells(lrow1 - 1, 1).End(xlUp).Row
If lrow2 > lrow1 + 2 Then
Rows(Evaluate(lrow2 + 3) & ":" & Evaluate(lrow1 - 1)).Delete
ElseIf lrow2 = lrow1 + 2 Then
Exit Sub
ElseIf lrow2 = lrow1 + 1 Then
Cells(lrow2 + 1, 1).EntireRow.Insert shift:=xlDown
Else:
Range(Cells(lrow2 + 1, 1), Cells(lrow2 + 2, 1)).EntireRow.Insert shift:=xlDown
End If
End Sub
En fait la macro fonctionne, mais elle ajoute 2 lignes alors que j'en ai déjà 10.
Ce que je souhaite, c'est partir des 10 lignes vides entre l'avant dernière et la
dernière et passer à 2 lignes vides.
Pour ce faire, j'ai considéré que la ligne de l'avant dernière est inférieure à celle de
la dernière donc j'ai changé la ligne suivante :
If lrow2 > lrow1 + 2 Then par If lrow2 < lrow1 + 2 Then pour faire réagir la
première condition : effacement d'un certain nombre de lignes.
A ce moment là, la macro bloque sur la ligne 4 "Row(Evaluate...." avec le commentaire
suivant : "propriété ou méthode non gérée par cet objet". Est ce que tu vois une erreur sur
cette ligne ? Je n'ai jamais utilisée ce genre de formule.
Merci d'avance.
Jacques.Bonjour Jacques,
pourquoi ne pas faire 2 recherches de dernières lignes en utilisant la
première pour lancer la seconde de la ligne du dessus ?
Donc tu te fait une première recherche lrow1 = [A65536].end(xlup).row
puis une seconde Lrow2 = cells(lrow1 - 1,1).end(xlup).row
pour finir un petit,
if lrow2 > lrow1 + 2 then
rows(evaluate(lrow2+3) & ":" & evaluate(lrow1-1) ).delete
elseif lrow2 = lrow1+2 then
exit sub
elseif lrow2=lrow1+1 then
cells(lrow2+1,1).entirerow.insert shift:=xldown
else:
range(cells(lrow2+1,1),cells(lrow2+2,1)).entirerow.insert shift:=xldwon
end if
je pense que cela dervrait correspondre en adaptant à ton cas.
Cordialement
BenjaminMerci Alain pour la réponse, mais cela ne convient pas car il y a effectivement des
lignes vides.
En fait, dans le cadre de ma seconde question, je voulais réaliser la chose
suivante (peut-être trop compliqué ?) :
- Retrouver la dernière ligne du tableau (je sais faire).
- Retrouver également l'avant dernière ligne contenant des données (ce n'est
donc pas l'avant dernière ligne du tableau)..
- Sélectionner la plage entre les deux.
- Supprimer les lignes de cette plage.
- Recréer 2 lignes vides.
JacquesJe sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
S'il n'y a pas de discontinuité dans les données (lignes vides) et pour la plage
nommée "tablo"
Rows([tablo].Find("*", , , , , xlPrevious).Row - 1).Select
Pour le reste de la question, comme je sens pas très bien le truc, je
m'abstiendrais...
AV
Bonjour Benjamin,
Merci de ta réponse.
Même si je ne comprends pas tout, l'idée de base me paraît excellente. En revanche j'ai
quelques soucis avec la macro.
Voici ton code que j'ai recopié :
Sub supprimer_Ligne()
lrow1 = [A65536].End(xlUp).Row
lrow2 = Cells(lrow1 - 1, 1).End(xlUp).Row
If lrow2 > lrow1 + 2 Then
Rows(Evaluate(lrow2 + 3) & ":" & Evaluate(lrow1 - 1)).Delete
ElseIf lrow2 = lrow1 + 2 Then
Exit Sub
ElseIf lrow2 = lrow1 + 1 Then
Cells(lrow2 + 1, 1).EntireRow.Insert shift:=xlDown
Else:
Range(Cells(lrow2 + 1, 1), Cells(lrow2 + 2, 1)).EntireRow.Insert shift:=xlDown
End If
End Sub
En fait la macro fonctionne, mais elle ajoute 2 lignes alors que j'en ai déjà 10.
Ce que je souhaite, c'est partir des 10 lignes vides entre l'avant dernière et la
dernière et passer à 2 lignes vides.
Pour ce faire, j'ai considéré que la ligne de l'avant dernière est inférieure à celle de
la dernière donc j'ai changé la ligne suivante :
If lrow2 > lrow1 + 2 Then par If lrow2 < lrow1 + 2 Then pour faire réagir la
première condition : effacement d'un certain nombre de lignes.
A ce moment là, la macro bloque sur la ligne 4 "Row(Evaluate...." avec le commentaire
suivant : "propriété ou méthode non gérée par cet objet". Est ce que tu vois une erreur sur
cette ligne ? Je n'ai jamais utilisée ce genre de formule.
Merci d'avance.
Jacques.
Bonjour Jacques,
pourquoi ne pas faire 2 recherches de dernières lignes en utilisant la
première pour lancer la seconde de la ligne du dessus ?
Donc tu te fait une première recherche lrow1 = [A65536].end(xlup).row
puis une seconde Lrow2 = cells(lrow1 - 1,1).end(xlup).row
pour finir un petit,
if lrow2 > lrow1 + 2 then
rows(evaluate(lrow2+3) & ":" & evaluate(lrow1-1) ).delete
elseif lrow2 = lrow1+2 then
exit sub
elseif lrow2=lrow1+1 then
cells(lrow2+1,1).entirerow.insert shift:=xldown
else:
range(cells(lrow2+1,1),cells(lrow2+2,1)).entirerow.insert shift:=xldwon
end if
je pense que cela dervrait correspondre en adaptant à ton cas.
Cordialement
Benjamin
Merci Alain pour la réponse, mais cela ne convient pas car il y a effectivement des
lignes vides.
En fait, dans le cadre de ma seconde question, je voulais réaliser la chose
suivante (peut-être trop compliqué ?) :
- Retrouver la dernière ligne du tableau (je sais faire).
- Retrouver également l'avant dernière ligne contenant des données (ce n'est
donc pas l'avant dernière ligne du tableau)..
- Sélectionner la plage entre les deux.
- Supprimer les lignes de cette plage.
- Recréer 2 lignes vides.
Jacques
Je sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
S'il n'y a pas de discontinuité dans les données (lignes vides) et pour la plage
nommée "tablo"
Rows([tablo].Find("*", , , , , xlPrevious).Row - 1).Select
Pour le reste de la question, comme je sens pas très bien le truc, je
m'abstiendrais...
AV
Bonjour Benjamin,
Merci de ta réponse.
Même si je ne comprends pas tout, l'idée de base me paraît excellente. En revanche j'ai
quelques soucis avec la macro.
Voici ton code que j'ai recopié :
Sub supprimer_Ligne()
lrow1 = [A65536].End(xlUp).Row
lrow2 = Cells(lrow1 - 1, 1).End(xlUp).Row
If lrow2 > lrow1 + 2 Then
Rows(Evaluate(lrow2 + 3) & ":" & Evaluate(lrow1 - 1)).Delete
ElseIf lrow2 = lrow1 + 2 Then
Exit Sub
ElseIf lrow2 = lrow1 + 1 Then
Cells(lrow2 + 1, 1).EntireRow.Insert shift:=xlDown
Else:
Range(Cells(lrow2 + 1, 1), Cells(lrow2 + 2, 1)).EntireRow.Insert shift:=xlDown
End If
End Sub
En fait la macro fonctionne, mais elle ajoute 2 lignes alors que j'en ai déjà 10.
Ce que je souhaite, c'est partir des 10 lignes vides entre l'avant dernière et la
dernière et passer à 2 lignes vides.
Pour ce faire, j'ai considéré que la ligne de l'avant dernière est inférieure à celle de
la dernière donc j'ai changé la ligne suivante :
If lrow2 > lrow1 + 2 Then par If lrow2 < lrow1 + 2 Then pour faire réagir la
première condition : effacement d'un certain nombre de lignes.
A ce moment là, la macro bloque sur la ligne 4 "Row(Evaluate...." avec le commentaire
suivant : "propriété ou méthode non gérée par cet objet". Est ce que tu vois une erreur sur
cette ligne ? Je n'ai jamais utilisée ce genre de formule.
Merci d'avance.
Jacques.Bonjour Jacques,
pourquoi ne pas faire 2 recherches de dernières lignes en utilisant la
première pour lancer la seconde de la ligne du dessus ?
Donc tu te fait une première recherche lrow1 = [A65536].end(xlup).row
puis une seconde Lrow2 = cells(lrow1 - 1,1).end(xlup).row
pour finir un petit,
if lrow2 > lrow1 + 2 then
rows(evaluate(lrow2+3) & ":" & evaluate(lrow1-1) ).delete
elseif lrow2 = lrow1+2 then
exit sub
elseif lrow2=lrow1+1 then
cells(lrow2+1,1).entirerow.insert shift:=xldown
else:
range(cells(lrow2+1,1),cells(lrow2+2,1)).entirerow.insert shift:=xldwon
end if
je pense que cela dervrait correspondre en adaptant à ton cas.
Cordialement
BenjaminMerci Alain pour la réponse, mais cela ne convient pas car il y a effectivement des
lignes vides.
En fait, dans le cadre de ma seconde question, je voulais réaliser la chose
suivante (peut-être trop compliqué ?) :
- Retrouver la dernière ligne du tableau (je sais faire).
- Retrouver également l'avant dernière ligne contenant des données (ce n'est
donc pas l'avant dernière ligne du tableau)..
- Sélectionner la plage entre les deux.
- Supprimer les lignes de cette plage.
- Recréer 2 lignes vides.
JacquesJe sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
S'il n'y a pas de discontinuité dans les données (lignes vides) et pour la plage
nommée "tablo"
Rows([tablo].Find("*", , , , , xlPrevious).Row - 1).Select
Pour le reste de la question, comme je sens pas très bien le truc, je
m'abstiendrais...
AV
Arf j'ai oublié de te dire,
c'est rowsssssssssss et non row ! c'est pourquoi ta ligne ne passe pas. la
fonction rows permet de travailler sur des lignes et se présente ainsi
rows("1:10")
ici comme on cherche les lignes on met juste des variables a la place des
nombre.
A plus
benjaminBonjour Benjamin,
Merci de ta réponse.
Même si je ne comprends pas tout, l'idée de base me paraît excellente. En revanche j'ai
quelques soucis avec la macro.
Voici ton code que j'ai recopié :
Sub supprimer_Ligne()
lrow1 = [A65536].End(xlUp).Row
lrow2 = Cells(lrow1 - 1, 1).End(xlUp).Row
If lrow2 > lrow1 + 2 Then
Rows(Evaluate(lrow2 + 3) & ":" & Evaluate(lrow1 - 1)).Delete
ElseIf lrow2 = lrow1 + 2 Then
Exit Sub
ElseIf lrow2 = lrow1 + 1 Then
Cells(lrow2 + 1, 1).EntireRow.Insert shift:=xlDown
Else:
Range(Cells(lrow2 + 1, 1), Cells(lrow2 + 2, 1)).EntireRow.Insert shift:=xlDown
End If
End Sub
En fait la macro fonctionne, mais elle ajoute 2 lignes alors que j'en ai déjà 10.
Ce que je souhaite, c'est partir des 10 lignes vides entre l'avant dernière et la
dernière et passer à 2 lignes vides.
Pour ce faire, j'ai considéré que la ligne de l'avant dernière est inférieure à celle de
la dernière donc j'ai changé la ligne suivante :
If lrow2 > lrow1 + 2 Then par If lrow2 < lrow1 + 2 Then pour faire réagir la
première condition : effacement d'un certain nombre de lignes.
A ce moment là , la macro bloque sur la ligne 4 "Row(Evaluate...." avec le commentaire
suivant : "propriété ou méthode non gérée par cet objet". Est ce que tu vois une erreur sur
cette ligne ? Je n'ai jamais utilisée ce genre de formule.
Merci d'avance.
Jacques.Bonjour Jacques,
pourquoi ne pas faire 2 recherches de dernières lignes en utilisant la
première pour lancer la seconde de la ligne du dessus ?
Donc tu te fait une première recherche lrow1 = [A65536].end(xlup).row
puis une seconde Lrow2 = cells(lrow1 - 1,1).end(xlup).row
pour finir un petit,
if lrow2 > lrow1 + 2 then
rows(evaluate(lrow2+3) & ":" & evaluate(lrow1-1) ).delete
elseif lrow2 = lrow1+2 then
exit sub
elseif lrow2=lrow1+1 then
cells(lrow2+1,1).entirerow.insert shift:=xldown
else:
range(cells(lrow2+1,1),cells(lrow2+2,1)).entirerow.insert shift:=xldwon
end if
je pense que cela dervrait correspondre en adaptant à ton cas.
Cordialement
BenjaminMerci Alain pour la réponse, mais cela ne convient pas car il y a effectivement des
lignes vides.
En fait, dans le cadre de ma seconde question, je voulais réaliser la chose
suivante (peut-être trop compliqué ?) :
- Retrouver la dernière ligne du tableau (je sais faire).
- Retrouver également l'avant dernière ligne contenant des données (ce n'est
donc pas l'avant dernière ligne du tableau)..
- Sélectionner la plage entre les deux.
- Supprimer les lignes de cette plage.
- Recréer 2 lignes vides.
JacquesJe sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
S'il n'y a pas de discontinuité dans les données (lignes vides) et pour la plage
nommée "tablo"
Rows([tablo].Find("*", , , , , xlPrevious).Row - 1).Select
Pour le reste de la question, comme je sens pas très bien le truc, je
m'abstiendrais...
AV
Arf j'ai oublié de te dire,
c'est rowsssssssssss et non row ! c'est pourquoi ta ligne ne passe pas. la
fonction rows permet de travailler sur des lignes et se présente ainsi
rows("1:10")
ici comme on cherche les lignes on met juste des variables a la place des
nombre.
A plus
benjamin
Bonjour Benjamin,
Merci de ta réponse.
Même si je ne comprends pas tout, l'idée de base me paraît excellente. En revanche j'ai
quelques soucis avec la macro.
Voici ton code que j'ai recopié :
Sub supprimer_Ligne()
lrow1 = [A65536].End(xlUp).Row
lrow2 = Cells(lrow1 - 1, 1).End(xlUp).Row
If lrow2 > lrow1 + 2 Then
Rows(Evaluate(lrow2 + 3) & ":" & Evaluate(lrow1 - 1)).Delete
ElseIf lrow2 = lrow1 + 2 Then
Exit Sub
ElseIf lrow2 = lrow1 + 1 Then
Cells(lrow2 + 1, 1).EntireRow.Insert shift:=xlDown
Else:
Range(Cells(lrow2 + 1, 1), Cells(lrow2 + 2, 1)).EntireRow.Insert shift:=xlDown
End If
End Sub
En fait la macro fonctionne, mais elle ajoute 2 lignes alors que j'en ai déjà 10.
Ce que je souhaite, c'est partir des 10 lignes vides entre l'avant dernière et la
dernière et passer à 2 lignes vides.
Pour ce faire, j'ai considéré que la ligne de l'avant dernière est inférieure à celle de
la dernière donc j'ai changé la ligne suivante :
If lrow2 > lrow1 + 2 Then par If lrow2 < lrow1 + 2 Then pour faire réagir la
première condition : effacement d'un certain nombre de lignes.
A ce moment là , la macro bloque sur la ligne 4 "Row(Evaluate...." avec le commentaire
suivant : "propriété ou méthode non gérée par cet objet". Est ce que tu vois une erreur sur
cette ligne ? Je n'ai jamais utilisée ce genre de formule.
Merci d'avance.
Jacques.
Bonjour Jacques,
pourquoi ne pas faire 2 recherches de dernières lignes en utilisant la
première pour lancer la seconde de la ligne du dessus ?
Donc tu te fait une première recherche lrow1 = [A65536].end(xlup).row
puis une seconde Lrow2 = cells(lrow1 - 1,1).end(xlup).row
pour finir un petit,
if lrow2 > lrow1 + 2 then
rows(evaluate(lrow2+3) & ":" & evaluate(lrow1-1) ).delete
elseif lrow2 = lrow1+2 then
exit sub
elseif lrow2=lrow1+1 then
cells(lrow2+1,1).entirerow.insert shift:=xldown
else:
range(cells(lrow2+1,1),cells(lrow2+2,1)).entirerow.insert shift:=xldwon
end if
je pense que cela dervrait correspondre en adaptant à ton cas.
Cordialement
Benjamin
Merci Alain pour la réponse, mais cela ne convient pas car il y a effectivement des
lignes vides.
En fait, dans le cadre de ma seconde question, je voulais réaliser la chose
suivante (peut-être trop compliqué ?) :
- Retrouver la dernière ligne du tableau (je sais faire).
- Retrouver également l'avant dernière ligne contenant des données (ce n'est
donc pas l'avant dernière ligne du tableau)..
- Sélectionner la plage entre les deux.
- Supprimer les lignes de cette plage.
- Recréer 2 lignes vides.
Jacques
Je sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
S'il n'y a pas de discontinuité dans les données (lignes vides) et pour la plage
nommée "tablo"
Rows([tablo].Find("*", , , , , xlPrevious).Row - 1).Select
Pour le reste de la question, comme je sens pas très bien le truc, je
m'abstiendrais...
AV
Arf j'ai oublié de te dire,
c'est rowsssssssssss et non row ! c'est pourquoi ta ligne ne passe pas. la
fonction rows permet de travailler sur des lignes et se présente ainsi
rows("1:10")
ici comme on cherche les lignes on met juste des variables a la place des
nombre.
A plus
benjaminBonjour Benjamin,
Merci de ta réponse.
Même si je ne comprends pas tout, l'idée de base me paraît excellente. En revanche j'ai
quelques soucis avec la macro.
Voici ton code que j'ai recopié :
Sub supprimer_Ligne()
lrow1 = [A65536].End(xlUp).Row
lrow2 = Cells(lrow1 - 1, 1).End(xlUp).Row
If lrow2 > lrow1 + 2 Then
Rows(Evaluate(lrow2 + 3) & ":" & Evaluate(lrow1 - 1)).Delete
ElseIf lrow2 = lrow1 + 2 Then
Exit Sub
ElseIf lrow2 = lrow1 + 1 Then
Cells(lrow2 + 1, 1).EntireRow.Insert shift:=xlDown
Else:
Range(Cells(lrow2 + 1, 1), Cells(lrow2 + 2, 1)).EntireRow.Insert shift:=xlDown
End If
End Sub
En fait la macro fonctionne, mais elle ajoute 2 lignes alors que j'en ai déjà 10.
Ce que je souhaite, c'est partir des 10 lignes vides entre l'avant dernière et la
dernière et passer à 2 lignes vides.
Pour ce faire, j'ai considéré que la ligne de l'avant dernière est inférieure à celle de
la dernière donc j'ai changé la ligne suivante :
If lrow2 > lrow1 + 2 Then par If lrow2 < lrow1 + 2 Then pour faire réagir la
première condition : effacement d'un certain nombre de lignes.
A ce moment là , la macro bloque sur la ligne 4 "Row(Evaluate...." avec le commentaire
suivant : "propriété ou méthode non gérée par cet objet". Est ce que tu vois une erreur sur
cette ligne ? Je n'ai jamais utilisée ce genre de formule.
Merci d'avance.
Jacques.Bonjour Jacques,
pourquoi ne pas faire 2 recherches de dernières lignes en utilisant la
première pour lancer la seconde de la ligne du dessus ?
Donc tu te fait une première recherche lrow1 = [A65536].end(xlup).row
puis une seconde Lrow2 = cells(lrow1 - 1,1).end(xlup).row
pour finir un petit,
if lrow2 > lrow1 + 2 then
rows(evaluate(lrow2+3) & ":" & evaluate(lrow1-1) ).delete
elseif lrow2 = lrow1+2 then
exit sub
elseif lrow2=lrow1+1 then
cells(lrow2+1,1).entirerow.insert shift:=xldown
else:
range(cells(lrow2+1,1),cells(lrow2+2,1)).entirerow.insert shift:=xldwon
end if
je pense que cela dervrait correspondre en adaptant à ton cas.
Cordialement
BenjaminMerci Alain pour la réponse, mais cela ne convient pas car il y a effectivement des
lignes vides.
En fait, dans le cadre de ma seconde question, je voulais réaliser la chose
suivante (peut-être trop compliqué ?) :
- Retrouver la dernière ligne du tableau (je sais faire).
- Retrouver également l'avant dernière ligne contenant des données (ce n'est
donc pas l'avant dernière ligne du tableau)..
- Sélectionner la plage entre les deux.
- Supprimer les lignes de cette plage.
- Recréer 2 lignes vides.
JacquesJe sais rechercher la dernière ligne d'un tableau, mais je ne sais
pas s'il existe du code pour retrouver l'avant dernière qui contient des
données ?
S'il n'y a pas de discontinuité dans les données (lignes vides) et pour la plage
nommée "tablo"
Rows([tablo].Find("*", , , , , xlPrevious).Row - 1).Select
Pour le reste de la question, comme je sens pas très bien le truc, je
m'abstiendrais...
AV