Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pour Jacky: problème macro "NouvelleLigneEnDessous"...

1 réponse
Avatar
ccdouble6
Utilisateur d'Excel2000 sur Windows XP, j'ai un problème avec la macro que tu
as mis à disposition sur Excelabo : "NouvelleLigneEnDessous".
J'ai réussi à la placer et à l'éxécuter, elle marche super bien hormis un
détail qui n'est pas négligeable.

Toutes les formules sont bien présentes sur la nouvelle ligne ajoutée, le
problème ce sont les autres lignes: leurs formules ne prennent plus en
compte les données de la ligne ajoutée, c'est comme si la ligne ajoutée était
"fantôme".
Exemple: je demande à la cellule "Resultat" d'afficher la valeur de celle
juste au-dessus. Avec la macro installée toute nouvelle ligne insérée
au-dessus de "Résultat" n'est pas prise en compte: "Résultat" se réfère
toujours à la cellule d'avant l'ajout, il "saute" la ligne ajoutée!

Je suis tout ce qu'il y a de plus novice en matière de macros et celle-ci
est trop complexe à mon niveau pour que j'arrive à "l'arranger".
Ci-dessous la macro dont il est question:
----------------------------------------------------------------------
Sub NouvelleLigneEnDessous()

Dim ZtNumLig As Integer
Dim ZtDerCol As Integer

ActiveCell.Range("A2").EntireRow.Insert
ZtNumLig = ActiveCell.Row
ZtDerCol = ActiveCell.SpecialCells(xlCellTypeLastCell).Column
Range(Cells(ZtNumLig, 1), Cells(ZtNumLig, ZtDerCol)).Copy _
Range(Cells(ZtNumLig + 1, 1), Cells(ZtNumLig + 1, ZtDerCol))
Application.ScreenUpdating = False
For i = 1 To ZtDerCol
If Not Cells(ZtNumLig + 1, i).HasFormula Then
Cells(ZtNumLig + 1, i).ClearContents
End If
Next i
ActiveCell.Range("A2").Select
End Sub

Jacky, (N°1021)
----------------------------------------------------------------------
Y a-t-il moyen de la corriger pour que les autres lignes "reconnaissent" les
données de la ligne ajoutée?
Je te remercie par avance.

ccdouble6.

1 réponse

Avatar
jps
bonjour ccdouble6
il me semblait avoir répondu à cette question que tu poses pour la seconde
fois...pourvu que tu ne changes pas de pseudo entretemps...
je ne suis pas jacky, hélas! mais à l'époque, il avait "travaillé" pour moi
dans le même cadre que celui qui te préoccupe ; je crois pouvoir te
conseiller d'utiliser plutôt "NouvelleLigneAuDessus" pour que ton tableau
prenne en compte les données de la ligne ajoutée...
voici la proc en question, fais des essais et tu nous dis si ça te convient
dès l'instant où le fait de saisir en première ligne plutôt qu'en dernière
ne te chagrine pas ; de toutes façons, c'est le prix à payer...
HTH
jps

Sub NouvelleLigneAuDessus()
' Insère une ligne au-dessus de la ligne qui contient la cellule active
' et y recopie les formules qu'elle contient
'Dim ZtNumLig As Integer
Dim ZtDerCol As Integer
Dim i
ActiveCell.EntireRow.insert
ActiveCell.Range("A2").Select
ZtNumLig = ActiveCell.Row
ZtDerCol = ActiveCell.SpecialCells(xlCellTypeLastCell).Column
Range(Cells(ZtNumLig, 1), Cells(ZtNumLig, ZtDerCol)).Copy _
Range(Cells(ZtNumLig - 1, 1), Cells(ZtNumLig - 1, ZtDerCol))
Application.ScreenUpdating = False
For i = 1 To ZtDerCol
If Not Cells(ZtNumLig - 1, i).HasFormula Then
Cells(ZtNumLig - 1, i).Clear 'Contents(pour que s'annulent aussi
les commentaires)
End If
Next i
End Sub


"ccdouble6" a écrit dans le message de
news:
Utilisateur d'Excel2000 sur Windows XP, j'ai un problème avec la macro que
tu

as mis à disposition sur Excelabo : "NouvelleLigneEnDessous".
J'ai réussi à la placer et à l'éxécuter, elle marche super bien hormis un
détail qui n'est pas négligeable.

Toutes les formules sont bien présentes sur la nouvelle ligne ajoutée, le
problème ce sont les autres lignes: leurs formules ne prennent plus en
compte les données de la ligne ajoutée, c'est comme si la ligne ajoutée
était

"fantôme".
Exemple: je demande à la cellule "Resultat" d'afficher la valeur de celle
juste au-dessus. Avec la macro installée toute nouvelle ligne insérée
au-dessus de "Résultat" n'est pas prise en compte: "Résultat" se réfère
toujours à la cellule d'avant l'ajout, il "saute" la ligne ajoutée!

Je suis tout ce qu'il y a de plus novice en matière de macros et celle-ci
est trop complexe à mon niveau pour que j'arrive à "l'arranger".
Ci-dessous la macro dont il est question:
----------------------------------------------------------------------
Sub NouvelleLigneEnDessous()

Dim ZtNumLig As Integer
Dim ZtDerCol As Integer

ActiveCell.Range("A2").EntireRow.Insert
ZtNumLig = ActiveCell.Row
ZtDerCol = ActiveCell.SpecialCells(xlCellTypeLastCell).Column
Range(Cells(ZtNumLig, 1), Cells(ZtNumLig, ZtDerCol)).Copy _
Range(Cells(ZtNumLig + 1, 1), Cells(ZtNumLig + 1, ZtDerCol))
Application.ScreenUpdating = False
For i = 1 To ZtDerCol
If Not Cells(ZtNumLig + 1, i).HasFormula Then
Cells(ZtNumLig + 1, i).ClearContents
End If
Next i
ActiveCell.Range("A2").Select
End Sub

Jacky, (N°1021)
----------------------------------------------------------------------
Y a-t-il moyen de la corriger pour que les autres lignes "reconnaissent"
les

données de la ligne ajoutée?
Je te remercie par avance.

ccdouble6.