J'ai trouvé sur Exelabo une macro (j'en profite pour remercier son
auteur) qui permet sur une feuille de créer une nouvelle ligne qui ne
conserve que les formules :
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
Cette procédure ne s'applique malheureusement qu'à la feuille active.
Ce que j'aimerais faire mais je n'y arrive pas, c'est que cette
procédure s'applique automatiquement à l'ensemble des feuilles de mon
classeur... et puis... si c'est pas trop demander, qu'elle crée la
nouvelle ligne juste après la dernière ligne contenant des données sans
tenir compte de la cellule sélectionnée... mais bon ce dernier point
n'est pas important, je peux me débrouiller sans.
tu peux toujours afficher tout le code ici, on se penchera dessus ciomme une maman sur son nouveau né :-))
Patrick
"Gastibelza" a écrit dans le message de news:
...Patrick avait soumis l'idée :
et si tu rajoutais une boucle au début: (sous le sub) sub .....
for each worksheet in activeworkbook
ton code ici
'sur le end sub
next end sub
Merci pour ta réponse, çà semblerait logique mais ça ne marche pas :-( J'obtiens une erreur d'exécution 438 : propriété ou méthode non gérée. En mode débogage, lorsque je pointe le curseur sur le mot worksheet, une infobulle me dit worksheet=vide Si tu vois d'où peut venir le problème... en dehors de la position située entre la chaise et le clavier ;o)
-- Amicalement,
Laurent
tu peux toujours afficher tout le code ici, on se penchera dessus ciomme une
maman sur son nouveau né :-))
Patrick
"Gastibelza" <adresse.invalid@domaine.invalid> a écrit dans le message de
news:c90fd6.3vv8pmd.2@gastibelza.mdr...
...Patrick avait soumis l'idée :
et si tu rajoutais une boucle au début: (sous le sub)
sub .....
for each worksheet in activeworkbook
ton code ici
'sur le end sub
next
end sub
Merci pour ta réponse, çà semblerait logique mais ça ne marche pas :-(
J'obtiens une erreur d'exécution 438 : propriété ou méthode non gérée.
En mode débogage, lorsque je pointe le curseur sur le mot worksheet,
une infobulle me dit worksheet=vide
Si tu vois d'où peut venir le problème... en dehors de la position
située entre la chaise et le clavier ;o)
tu peux toujours afficher tout le code ici, on se penchera dessus ciomme une maman sur son nouveau né :-))
Patrick
"Gastibelza" a écrit dans le message de news:
...Patrick avait soumis l'idée :
et si tu rajoutais une boucle au début: (sous le sub) sub .....
for each worksheet in activeworkbook
ton code ici
'sur le end sub
next end sub
Merci pour ta réponse, çà semblerait logique mais ça ne marche pas :-( J'obtiens une erreur d'exécution 438 : propriété ou méthode non gérée. En mode débogage, lorsque je pointe le curseur sur le mot worksheet, une infobulle me dit worksheet=vide Si tu vois d'où peut venir le problème... en dehors de la position située entre la chaise et le clavier ;o)
-- Amicalement,
Laurent
Gastibelza
tu peux toujours afficher tout le code ici, on se penchera dessus ciomme une maman sur son nouveau né :-)
Ben le voilà, mais je n'ai rajouté que la boucle (pas eu encore le temps de regarder pour la seconde partie) et ça ne fonctionne pas, le débogueur s'arrête sur la 1ere ligne du code après les déclarations des variables avec l'erreur mentionnée plus haut.
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer Dim ZtDerCol As Integer For Each Worksheet In ActiveWorkbook 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 Next End Sub
Merci d'avance pour qui voudra me donner la gougoutte ;-)
-- Amicalement,
Laurent
tu peux toujours afficher tout le code ici, on se penchera dessus ciomme une
maman sur son nouveau né :-)
Ben le voilà, mais je n'ai rajouté que la boucle (pas eu encore le
temps de regarder pour la seconde partie) et ça ne fonctionne pas, le
débogueur s'arrête sur la 1ere ligne du code après les déclarations des
variables avec l'erreur mentionnée plus haut.
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer
Dim ZtDerCol As Integer
For Each Worksheet In ActiveWorkbook
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
Next
End Sub
Merci d'avance pour qui voudra me donner la gougoutte ;-)
tu peux toujours afficher tout le code ici, on se penchera dessus ciomme une maman sur son nouveau né :-)
Ben le voilà, mais je n'ai rajouté que la boucle (pas eu encore le temps de regarder pour la seconde partie) et ça ne fonctionne pas, le débogueur s'arrête sur la 1ere ligne du code après les déclarations des variables avec l'erreur mentionnée plus haut.
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer Dim ZtDerCol As Integer For Each Worksheet In ActiveWorkbook 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 Next End Sub
Merci d'avance pour qui voudra me donner la gougoutte ;-)
-- Amicalement,
Laurent
Gastibelza
sabatier a émis l'idée suivante :
encore que chez nous, dans le beaujolais, ce serait plutôt le PEUCWBIK... Problem Exists Under Chair With Bottle Instead Keyboard...
On ne doit pas habiter le même Beaujolais... chez moi l'ordinateur n'est pas à la cave :-Z
-- Amicalement,
Laurent
sabatier a émis l'idée suivante :
encore que chez nous, dans le beaujolais, ce serait plutôt le PEUCWBIK...
Problem Exists Under Chair With Bottle Instead Keyboard...
On ne doit pas habiter le même Beaujolais... chez moi l'ordinateur
n'est pas à la cave :-Z
encore que chez nous, dans le beaujolais, ce serait plutôt le PEUCWBIK... Problem Exists Under Chair With Bottle Instead Keyboard...
On ne doit pas habiter le même Beaujolais... chez moi l'ordinateur n'est pas à la cave :-Z
-- Amicalement,
Laurent
...Patrick
j'ai change ceci et pas de plantage .. mais je n'ai pas observé ce que le code fait :-))
Dim oSheet For Each oSheet In ActiveWorkbook.Worksheets
...Patrick
Bon travail
"Gastibelza" a écrit dans le message de news:
tu peux toujours afficher tout le code ici, on se penchera dessus ciomme une
maman sur son nouveau né :-)
Ben le voilà, mais je n'ai rajouté que la boucle (pas eu encore le temps de regarder pour la seconde partie) et ça ne fonctionne pas, le débogueur s'arrête sur la 1ere ligne du code après les déclarations des variables avec l'erreur mentionnée plus haut.
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer Dim ZtDerCol As Integer For Each Worksheet In ActiveWorkbook 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 Next End Sub
Merci d'avance pour qui voudra me donner la gougoutte ;-)
-- Amicalement,
Laurent
j'ai change ceci et pas de plantage ..
mais je n'ai pas observé ce que le code fait :-))
Dim oSheet
For Each oSheet In ActiveWorkbook.Worksheets
...Patrick
Bon travail
"Gastibelza" <adresse.invalid@domaine.invalid> a écrit dans le message de
news:c92sod.3vvh3fh.2@gastibelza.mdr...
tu peux toujours afficher tout le code ici, on se penchera dessus ciomme
une
maman sur son nouveau né :-)
Ben le voilà, mais je n'ai rajouté que la boucle (pas eu encore le
temps de regarder pour la seconde partie) et ça ne fonctionne pas, le
débogueur s'arrête sur la 1ere ligne du code après les déclarations des
variables avec l'erreur mentionnée plus haut.
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer
Dim ZtDerCol As Integer
For Each Worksheet In ActiveWorkbook
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
Next
End Sub
Merci d'avance pour qui voudra me donner la gougoutte ;-)
j'ai change ceci et pas de plantage .. mais je n'ai pas observé ce que le code fait :-))
Dim oSheet For Each oSheet In ActiveWorkbook.Worksheets
...Patrick
Bon travail
"Gastibelza" a écrit dans le message de news:
tu peux toujours afficher tout le code ici, on se penchera dessus ciomme une
maman sur son nouveau né :-)
Ben le voilà, mais je n'ai rajouté que la boucle (pas eu encore le temps de regarder pour la seconde partie) et ça ne fonctionne pas, le débogueur s'arrête sur la 1ere ligne du code après les déclarations des variables avec l'erreur mentionnée plus haut.
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer Dim ZtDerCol As Integer For Each Worksheet In ActiveWorkbook 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 Next End Sub
Merci d'avance pour qui voudra me donner la gougoutte ;-)
-- Amicalement,
Laurent
Gastibelza
Gastibelza avait énoncé :
mais je n'ai rajouté que la boucle (pas eu encore le temps de regarder pour la seconde partie)
Le tableau commençant à la CL A6 et la colonne A étant obligatoirement servie, la ligne de code suivante a suffit :
Range("A6").End(xlDown).Offset(0, 0).Activate
Donc pour récapituler : le code ci-après fonctionne mais ne s'applique que sur la feuille active (même si toutes les feuilles ont été préalablement sélectionnées à la souris)
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer Dim ZtDerCol As Integer Range("A6").End(xlDown).Offset(0, 0).Activate 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
Et le code ci-après ne fonctionne pas :
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer Dim ZtDerCol As Integer For Each Worksheet In ActiveWorkbook Range("A6").End(xlDown).Offset(0, 0).Activate 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 Next End Sub
-- Amicalement,
Laurent
Gastibelza avait énoncé :
mais je n'ai rajouté que la boucle (pas eu encore le temps de regarder pour
la seconde partie)
Le tableau commençant à la CL A6 et la colonne A étant obligatoirement
servie, la ligne de code suivante a suffit :
Range("A6").End(xlDown).Offset(0, 0).Activate
Donc pour récapituler :
le code ci-après fonctionne mais ne s'applique que sur la feuille
active (même si toutes les feuilles ont été préalablement sélectionnées
à la souris)
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer
Dim ZtDerCol As Integer
Range("A6").End(xlDown).Offset(0, 0).Activate
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
Et le code ci-après ne fonctionne pas :
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer
Dim ZtDerCol As Integer
For Each Worksheet In ActiveWorkbook
Range("A6").End(xlDown).Offset(0, 0).Activate
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
Next
End Sub
mais je n'ai rajouté que la boucle (pas eu encore le temps de regarder pour la seconde partie)
Le tableau commençant à la CL A6 et la colonne A étant obligatoirement servie, la ligne de code suivante a suffit :
Range("A6").End(xlDown).Offset(0, 0).Activate
Donc pour récapituler : le code ci-après fonctionne mais ne s'applique que sur la feuille active (même si toutes les feuilles ont été préalablement sélectionnées à la souris)
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer Dim ZtDerCol As Integer Range("A6").End(xlDown).Offset(0, 0).Activate 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
Et le code ci-après ne fonctionne pas :
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer Dim ZtDerCol As Integer For Each Worksheet In ActiveWorkbook Range("A6").End(xlDown).Offset(0, 0).Activate 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 Next End Sub
-- Amicalement,
Laurent
...Patrick
tu as lu ma phrase for each .... ?
Dim oSheet For Each oSheet In ActiveWorkbook.Worksheets
:-)
"Gastibelza" a écrit dans le message de news:
Gastibelza avait énoncé :
mais je n'ai rajouté que la boucle (pas eu encore le temps de regarder pour
la seconde partie)
Le tableau commençant à la CL A6 et la colonne A étant obligatoirement servie, la ligne de code suivante a suffit :
Range("A6").End(xlDown).Offset(0, 0).Activate
Donc pour récapituler : le code ci-après fonctionne mais ne s'applique que sur la feuille active (même si toutes les feuilles ont été préalablement sélectionnées à la souris)
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer Dim ZtDerCol As Integer Range("A6").End(xlDown).Offset(0, 0).Activate 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
Et le code ci-après ne fonctionne pas :
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer Dim ZtDerCol As Integer For Each Worksheet In ActiveWorkbook Range("A6").End(xlDown).Offset(0, 0).Activate 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 Next End Sub
-- Amicalement,
Laurent
tu as lu ma phrase for each .... ?
Dim oSheet
For Each oSheet In ActiveWorkbook.Worksheets
:-)
"Gastibelza" <adresse.invalid@domaine.invalid> a écrit dans le message de
news:c9318v.3vvfgkh.2@gastibelza.mdr...
Gastibelza avait énoncé :
mais je n'ai rajouté que la boucle (pas eu encore le temps de regarder
pour
la seconde partie)
Le tableau commençant à la CL A6 et la colonne A étant obligatoirement
servie, la ligne de code suivante a suffit :
Range("A6").End(xlDown).Offset(0, 0).Activate
Donc pour récapituler :
le code ci-après fonctionne mais ne s'applique que sur la feuille
active (même si toutes les feuilles ont été préalablement sélectionnées
à la souris)
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer
Dim ZtDerCol As Integer
Range("A6").End(xlDown).Offset(0, 0).Activate
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
Et le code ci-après ne fonctionne pas :
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer
Dim ZtDerCol As Integer
For Each Worksheet In ActiveWorkbook
Range("A6").End(xlDown).Offset(0, 0).Activate
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
Next
End Sub
Dim oSheet For Each oSheet In ActiveWorkbook.Worksheets
:-)
"Gastibelza" a écrit dans le message de news:
Gastibelza avait énoncé :
mais je n'ai rajouté que la boucle (pas eu encore le temps de regarder pour
la seconde partie)
Le tableau commençant à la CL A6 et la colonne A étant obligatoirement servie, la ligne de code suivante a suffit :
Range("A6").End(xlDown).Offset(0, 0).Activate
Donc pour récapituler : le code ci-après fonctionne mais ne s'applique que sur la feuille active (même si toutes les feuilles ont été préalablement sélectionnées à la souris)
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer Dim ZtDerCol As Integer Range("A6").End(xlDown).Offset(0, 0).Activate 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
Et le code ci-après ne fonctionne pas :
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer Dim ZtDerCol As Integer For Each Worksheet In ActiveWorkbook Range("A6").End(xlDown).Offset(0, 0).Activate 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 Next End Sub
-- Amicalement,
Laurent
Gastibelza
j'ai change ceci et pas de plantage ..
Effectivement, pas de plantage.
mais je n'ai pas observé ce que le code fait :-)
Il rajoute 14 lignes (j'ai 14 feuilles) uniquement dans la feuille active et rien dans les autres feuilles :'(
-- Amicalement,
Laurent
j'ai change ceci et pas de plantage ..
Effectivement, pas de plantage.
mais je n'ai pas observé ce que le code fait :-)
Il rajoute 14 lignes (j'ai 14 feuilles) uniquement dans la feuille
active et rien dans les autres feuilles :'(
Il rajoute 14 lignes (j'ai 14 feuilles) uniquement dans la feuille active et rien dans les autres feuilles :'(
-- Amicalement,
Laurent
Frédéric Sigonneau
Bonsoir,
Il faudrait sans doute préciser un peu plus quels objets sont manipulés. Essaye avec ces modifications du code (non testées) :
Sub NouvelleLigneEnDessous() Dim ZtNumLig As Integer Dim ZtDerCol As Integer Dim sht As Worksheet
For Each sht In ActiveWorkbook.Sheets sht.Activate sht.Range("A6").End(xlDown).Offset(0, 0).Activate 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)) 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 Next sht
End Sub
FS --- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Gastibelza avait énoncé :
mais je n'ai rajouté que la boucle (pas eu encore le temps de regarder pour la seconde partie)
Le tableau commençant à la CL A6 et la colonne A étant obligatoirement servie, la ligne de code suivante a suffit :
Range("A6").End(xlDown).Offset(0, 0).Activate
Donc pour récapituler : le code ci-après fonctionne mais ne s'applique que sur la feuille active (même si toutes les feuilles ont été préalablement sélectionnées à la souris)
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer Dim ZtDerCol As Integer Range("A6").End(xlDown).Offset(0, 0).Activate 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
Et le code ci-après ne fonctionne pas :
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer Dim ZtDerCol As Integer For Each Worksheet In ActiveWorkbook Range("A6").End(xlDown).Offset(0, 0).Activate 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 Next End Sub
Bonsoir,
Il faudrait sans doute préciser un peu plus quels objets sont manipulés. Essaye
avec ces modifications du code (non testées) :
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer
Dim ZtDerCol As Integer
Dim sht As Worksheet
For Each sht In ActiveWorkbook.Sheets
sht.Activate
sht.Range("A6").End(xlDown).Offset(0, 0).Activate
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))
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
Next sht
End Sub
FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Gastibelza avait énoncé :
mais je n'ai rajouté que la boucle (pas eu encore le temps de regarder
pour la seconde partie)
Le tableau commençant à la CL A6 et la colonne A étant obligatoirement
servie, la ligne de code suivante a suffit :
Range("A6").End(xlDown).Offset(0, 0).Activate
Donc pour récapituler :
le code ci-après fonctionne mais ne s'applique que sur la feuille active
(même si toutes les feuilles ont été préalablement sélectionnées à la
souris)
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer
Dim ZtDerCol As Integer
Range("A6").End(xlDown).Offset(0, 0).Activate
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
Et le code ci-après ne fonctionne pas :
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer
Dim ZtDerCol As Integer
For Each Worksheet In ActiveWorkbook
Range("A6").End(xlDown).Offset(0, 0).Activate
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
Next
End Sub
Il faudrait sans doute préciser un peu plus quels objets sont manipulés. Essaye avec ces modifications du code (non testées) :
Sub NouvelleLigneEnDessous() Dim ZtNumLig As Integer Dim ZtDerCol As Integer Dim sht As Worksheet
For Each sht In ActiveWorkbook.Sheets sht.Activate sht.Range("A6").End(xlDown).Offset(0, 0).Activate 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)) 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 Next sht
End Sub
FS --- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Gastibelza avait énoncé :
mais je n'ai rajouté que la boucle (pas eu encore le temps de regarder pour la seconde partie)
Le tableau commençant à la CL A6 et la colonne A étant obligatoirement servie, la ligne de code suivante a suffit :
Range("A6").End(xlDown).Offset(0, 0).Activate
Donc pour récapituler : le code ci-après fonctionne mais ne s'applique que sur la feuille active (même si toutes les feuilles ont été préalablement sélectionnées à la souris)
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer Dim ZtDerCol As Integer Range("A6").End(xlDown).Offset(0, 0).Activate 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
Et le code ci-après ne fonctionne pas :
Sub NouvelleLigneEnDessous()
Dim ZtNumLig As Integer Dim ZtDerCol As Integer For Each Worksheet In ActiveWorkbook Range("A6").End(xlDown).Offset(0, 0).Activate 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 Next End Sub
Gastibelza
Frédéric Sigonneau a présenté l'énoncé suivant :
Bonsoir,
Bonsoir,
Il faudrait sans doute préciser un peu plus quels objets sont manipulés. Essaye avec ces modifications du code (non testées) :
Mille mercis Monsieur Sigonneau !!! Le code que tu donnes fonctionne parfaitement. Il fait même exactement ce que je recherchais après avoir rajouté 3 lignes pour revenir sur la feuille qui était active au moment du lancement de la macro (code en dessous).
Je te renouvelle mes remerciements :-)
Public Sub nouvelleligne() Dim ZtNumLig As Integer Dim ZtDerCol As Integer Dim sht As Worksheet Dim FeuilleActive As String FeuilleActive = ActiveSheet.Name For Each sht In ActiveWorkbook.Sheets sht.Activate sht.Range("A6").End(xlDown).Offset(0, 0).Activate 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)) 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 Next sht Sheets(FeuilleActive).Activate End Sub
-- Amicalement,
Laurent
Frédéric Sigonneau a présenté l'énoncé suivant :
Bonsoir,
Bonsoir,
Il faudrait sans doute préciser un peu plus quels objets sont manipulés.
Essaye avec ces modifications du code (non testées) :
Mille mercis Monsieur Sigonneau !!! Le code que tu donnes fonctionne
parfaitement. Il fait même exactement ce que je recherchais après avoir
rajouté 3 lignes pour revenir sur la feuille qui était active au moment
du lancement de la macro (code en dessous).
Je te renouvelle mes remerciements :-)
Public Sub nouvelleligne()
Dim ZtNumLig As Integer
Dim ZtDerCol As Integer
Dim sht As Worksheet
Dim FeuilleActive As String
FeuilleActive = ActiveSheet.Name
For Each sht In ActiveWorkbook.Sheets
sht.Activate
sht.Range("A6").End(xlDown).Offset(0, 0).Activate
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))
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
Next sht
Sheets(FeuilleActive).Activate
End Sub
Il faudrait sans doute préciser un peu plus quels objets sont manipulés. Essaye avec ces modifications du code (non testées) :
Mille mercis Monsieur Sigonneau !!! Le code que tu donnes fonctionne parfaitement. Il fait même exactement ce que je recherchais après avoir rajouté 3 lignes pour revenir sur la feuille qui était active au moment du lancement de la macro (code en dessous).
Je te renouvelle mes remerciements :-)
Public Sub nouvelleligne() Dim ZtNumLig As Integer Dim ZtDerCol As Integer Dim sht As Worksheet Dim FeuilleActive As String FeuilleActive = ActiveSheet.Name For Each sht In ActiveWorkbook.Sheets sht.Activate sht.Range("A6").End(xlDown).Offset(0, 0).Activate 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)) 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 Next sht Sheets(FeuilleActive).Activate End Sub