Difficulté pour insérer nouvelle ligne en VBA

bonsoir MFerrand

oui je pense que la majorité des fichiers feront moins de 65536 lignes dans le domaine le plus courant du moins mais c'est quand même bon a savoir et comme tu le dit plus esthétique , tout comme un code commenté

Sub AjouterRef()

        Dim lig As Integer
        With Sheets("Feuil1")
        'recherche la dernière cellule vide dans la colonne A
            lig = .Range("A" & .Rows.Count).End(xlUp)(2).Row
            'copie la ligne de dessus avec ses formats
            .Range("A" & lig - 1 & ":H" & lig - 1).Copy
            'restitue la ligne a chaque demande
            .Range("A" & lig).Insert xlShiftDown
            'nettoie la ligne insérée
            .Range("A" & lig & ":H" & lig).ClearContents
            'écriture gauche dans la colonne A
            .Range("A" & lig & ":H" & lig).HorizontalAlignment = xlLeft
            'écriture centrée dans la colonne B
            .Range("B" & lig).HorizontalAlignment = xlCenter
        End With

End Sub

Bonsoir @ tous !

J'arrive comme toujours après la bataille !

Ci-joint un fichier avec ce qui est demandé : ajout d'une ligne sous le tableau...

Sauf qu'il n'y a pas de macro... C'est juste la suppression de trois colonnes, l'élargissement d'une, et la mise en place d'un tableau sous Excel et le tour est joué, non ?

@ bientôt

LouReeD

bonsoir Loureed

tu arrive peut etre après la bataille notre ami n'as toujours pas bien défini son besoin ,donc ta version est très bien vu le contexte

Ou lààà... Sa à bougé par içi depuis tout à l'heure !!!

Désolé pour cette absence, mais j'étais au resto avec ma petite famille...

MFerrand a écrit :

Le A65536 qui t'inquiétait tout à l'heure est la même chose que Rows.Count, on l'utilisait jusqu'en 2003 parce que les feuilles avaient 65536 lignes, pour désigner la dernière. Aujourd'hui, elles en ont 1048576, alors plutôt que de prendre ce nouveau nombre pour la dernière ligne, on lui préfère Rows.Count qui le renvoie.

Ton derniereLigne antérieur a été remplacé par lig. L'un des deux était à supprimer.

Merci MFerrand pour cette explication !!!

Comme notre amis grisan29, je ne le savais pas...

MFerrand a écrit :

Et le démasquage de la ligne que tu viens d'insérer n'a pas de raison d'être. Elle n'a pu être masquée !

Si au contraire... Quand j'ai énuméré les modifs à faire, j'ai précisé que les nouvelles lignes devraient démasquer avant d'être ajoutées..

MFerrand a écrit :

Bref, je ne retouve tout de même pas ce que tu annonçais au départ, mais il y a eu divers changements en cours de route.

Bé... si un peu quand même !!!

Insérer une nouvelle ligne en DESSOUS d'une ligne déjà existante... C'est exactement se que le code fait...

Un peu différemment de mon code, mais au final on obtient le même résultat !!!

grisan29 a écrit :
.Rows(lig).EntireRow.Hidden = False

Que viens faire cette ligne, avec un essai elle ne cache rien du tout car lig tout seul ne fonctionne pas.

Cette ligne n'a pas pour but de masquer, mais de Démasquer...

Le petit tableau fonctionnel :

54classeur1.xlsm (27.89 Ko)

Le code fonctionnel :

Sub AjouterRef()

Dim lig As Integer

        With Sheets("Feuil1")
            lig = .Range("A65536").End(xlUp)(2).Row

            .Range("A" & lig - 1 & ":H" & lig - 1).Copy
            .Range("A" & lig).Insert xlShiftDown
            .Range("A" & lig & ":H" & lig).ClearContents
            .Range("A" & lig & ":H" & lig).HorizontalAlignment = xlLeft
            .Range("B" & lig).HorizontalAlignment = xlCenter
            .Rows(lig).EntireRow.Hidden = False
            .Range("A" & lig).Select
        End With

End Sub

En tout cas UN GRAND MERCI, grisan29 & MFerrand pour votre aide...

Je passe en "Résolu"...

iDev4s a écrit :

Ou lààà... Sa à bougé par içi depuis tout à l'heure !!!

MFerrand a écrit :

Et le démasquage de la ligne que tu viens d'insérer n'a pas de raison d'être. Elle n'a pu être masquée !

Si au contraire... Quand j'ai énuméré les modifs à faire, j'ai précisé que les nouvelles lignes devraient démasquer avant d'être ajoutées..

A l'insertion, ta ligne est visible ! (et même si tu l'insérais au milieu de lignes masquées, elle serait visible !!)

Sur windows je ne sais pas…

Par contre sur MAC, j'ai testé avec et sans la ligne :

.Rows(lig).EntireRow.Hidden = False

Et si elle n'y est pas, la nouvelle ligne s'insère bien, mais reste masquée…

Si les lignes étaient masquées par défaut, ça se saurait !!! Et ce serait un sacré bogue d'Excel !

Bon weekend

et tu pourrais rajouter un deuxième EntireRow pour être sûr...

Pourquoi masquées par défaut ???

C'est moi qui les aient masquées à la base…

Bon week-end…

inutile de discuter plus longtemps...

Rechercher des sujets similaires à "difficulte inserer nouvelle ligne vba"