Ajouter – supprimer des lignes en VBA sans perturber les formule
Résolu
mijean94
Messages postés
415
Date d'inscription
Statut
Membre
Dernière intervention
-
mijean94 Messages postés 415 Date d'inscription Statut Membre Dernière intervention -
mijean94 Messages postés 415 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Supprimer des lignes vba
- Supprimer rond bleu whatsapp - Guide
- Supprimer une page word - Guide
- Supprimer pub youtube - Accueil - Streaming
- Partager des photos en ligne - Guide
- Fichier impossible à supprimer - Guide
3 réponses
Bonjour,
Pour l'ajout de ligne je te suggère cette procédure plus simple :
Pour supprimer des lignes lorsqu'elles sont vides, cela ne va pas être possible puisque tu as des formules et donc la ligne n'est pas vide.
Si tu supprimes en colonne C, par exemple ta formule en colonne B des lignes suivantes passe en erreur fatalement ;-)
Pour l'ajout de ligne je te suggère cette procédure plus simple :
Sub Ajout_ligne() ActiveSheet.Unprotect Application.ScreenUpdating = False Range("ligne_ref").Insert Shift:=xlDown Cells(Range("ligne_ref").Row, 2).Offset(-2, 0).Resize(2, 1).FillDown Cells(Range("ligne_ref").Row, 10).Offset(-2, 0).Resize(2, 1).FillDown Application.ScreenUpdating = True ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=False End Sub
Pour supprimer des lignes lorsqu'elles sont vides, cela ne va pas être possible puisque tu as des formules et donc la ligne n'est pas vide.
Si tu supprimes en colonne C, par exemple ta formule en colonne B des lignes suivantes passe en erreur fatalement ;-)
Bonjour,
Comme tu tiens vraiment à avoir tes suppressions, les voici :
https://www.cjoint.com/c/FCzwHV2lual
Tu remarqueras que je n'ai pas utilisé ta formule pour derlig car elle ne fonctionne pas. Malgré ton info en ligne cachée, le résultat est faux, tout bonnement parce que "end(xlup)" ne tient compte que des lignes visibles.
Par contre avec ma méthode tu vas pouvoir supprimer uniquement les lignes vides entre C et J.
Comme tu tiens vraiment à avoir tes suppressions, les voici :
https://www.cjoint.com/c/FCzwHV2lual
Tu remarqueras que je n'ai pas utilisé ta formule pour derlig car elle ne fonctionne pas. Malgré ton info en ligne cachée, le résultat est faux, tout bonnement parce que "end(xlup)" ne tient compte que des lignes visibles.
Par contre avec ma méthode tu vas pouvoir supprimer uniquement les lignes vides entre C et J.
Re,
Je n’ai pas résisté à faire des essais.
Ça marche bien. Demain matin je l’incorpore avec mes autres code pour vérifier le fonctionnement de l’ensemble.
J’ai une autre question ou je ne trouve pas la réponse,
Le code ci-dessous copie la formule de la colonne K dans la nouvelle ligne.
Est-il possible de copier le commentaire qui est dans une cellule avec la copie.
Par exemple si j’ajoute le code qui suit, que faut-il remplacer pour avoir le commentaire copié ?
Merci de ton aide
Cordialement
Je n’ai pas résisté à faire des essais.
Ça marche bien. Demain matin je l’incorpore avec mes autres code pour vérifier le fonctionnement de l’ensemble.
J’ai une autre question ou je ne trouve pas la réponse,
Le code ci-dessous copie la formule de la colonne K dans la nouvelle ligne.
Cells(Range("ligne_ref").Row, 11).Offset(-2, 0).Resize(2, 1).FillDown
Est-il possible de copier le commentaire qui est dans une cellule avec la copie.
Par exemple si j’ajoute le code qui suit, que faut-il remplacer pour avoir le commentaire copié ?
Cells(Range("ligne_ref").Row, 3).Offset(-2, 0).Resize(2, 1).FilllDown
Merci de ton aide
Cordialement
Bonjour,
Voilà le code complet avec copie des commentaires s'ils existent :
Voilà le code complet avec copie des commentaires s'ils existent :
ActiveSheet.Unprotect Application.ScreenUpdating = False Range("ligne_ref").Insert Shift:=xlDown Cells(Range("ligne_ref").Row, 2).Offset(-2, 0).Resize(2, 1).FillDown 'copie formule de la colonne B Cells(Range("ligne_ref").Row, 11).Offset(-2, 0).Resize(2, 1).FillDown ' copie formule de la colonne K Cells(Range("ligne_ref").Row, 4).Offset(-1, 0).Resize(1, 5).Merge ' fusion de colonne D à H Rows(Range("ligne_ref").Row).Offset(-2).Copy Rows(Range("ligne_ref").Row).Offset(-1).PasteSpecial Paste:=xlPasteComments ' copie commentaires Application.ScreenUpdating = True ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=False
Bonjour,
Merci pour la réponse.
j'ai ajouter le code dans mon application et cela ne semble pas marcher.
j'ai fait l'essai avec et sans ma ligne cachée.
y a t-il quelque chose que je n'est pas fait ou compris pour le bon fonctionnement ?
voici le fichier modifié : https://www.cjoint.com/c/FCAh5jufspt
cordialement
Merci pour la réponse.
j'ai ajouter le code dans mon application et cela ne semble pas marcher.
j'ai fait l'essai avec et sans ma ligne cachée.
y a t-il quelque chose que je n'est pas fait ou compris pour le bon fonctionnement ?
voici le fichier modifié : https://www.cjoint.com/c/FCAh5jufspt
cordialement
Il me manque la fusion des lignes D à H qui n’est pas pris en comte dans la copie.
Y a-t-il une solution simple ?
Avec ton code les formules marchent bien lors de la copie, si je conserve ma ligne cachée.
Je vais chercher maintenant à résoudre le code pour la suppression des lignes. Il doit bien y avoir une solution !
Voici mon programme modifié avec ton code : https://www.cjoint.com/c/FCzkR1vcNIt
Cordialement
<ital><Il me manque la fusion des lignes D à H /ital>
Au lieu de lignes, ce serait plutôt des colonnes ;-)
Tu devrais t'apercevoir assez rapidement si tu veux éviter de t'arracher les cheveux que faire des fusions, surtout en utilisant les macros, n'est pas très judicieux.
Il me semble que dans ton cas au lieu de fusionner 5 colonnes avec une seule colonne agrandie tu aurais le même résultat.
Si j'utilise la fusion de ces colonnes c'est que dans mon programme finale, il y a toutes les cellules de ces colonne dans la partie haute du tableau, ici non visibles, qui sont utilisées pour d'autres choses.
Merci pour ta réponse.
je vais continuer à chercher la solution à mes problèmes, et je suis certain qu'il y a une solution pour qui le code est familier.
cordialement
C'est toi bien sûr qui fait ton tableau comme tu veux, mais regardes sur les forums ce qu'en disent ceux "pour qui le code est familier" comme tu dis.
Si tu tiens à fusionner tu rajoutes cette ligne dans le code ci-dessus entre 8 et 9 :
Pour supprimer les lignes ce n'est pas un souci, tu pars d'en bas en remontant (step -1) mais avec ton numéro de ligne par formule tu n'auras pas de ligne vide et si tu en supprimes une ta formule est brisée car ton B3 + 1 par exemple deviendra #REF! si tu supprimes la ligne 3.
Effectivement tu as entièrement raison pour la fusion des cellules, mais malheureusement c'est pas toujours possible pour moi de faire autrement.
Merci pour ton code, je vais tester après le repas.
Pour la partie supprimer, comme il y a la ligne cachée ou j'ai ajouté des données en B pour pouvoir la reconnaître, il me semble qu'il y aura une possibilité sans perturber les formules. Je vais chercher et peut-être poserais encore une petite question .
ça avance c'est déjà très bien. merci
cordialement