Ajouter – supprimer des lignes en VBA sans perturber les formule

Résolu/Fermé
mijean94 Messages postés 413 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 12 septembre 2024 - 24 mars 2016 à 23:28
mijean94 Messages postés 413 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 12 septembre 2024 - 26 mars 2016 à 22:24
Bonjour,

Je cherche comment ajouter ou supprimer des lignes dans mon programme.
J’ai mis deux boutons, un pour l’ajout et l’autre pour la suppression.

Dans le cas de la suppression, je souhaite que ce ne soit possible que si la ligne est vide.
De plus lorsque j’ajoute des lignes les formules ne fonctionnent plus.

J’ai essayé avec des infos trouvées par ci par là sans arriver à la solution finale.

Es que je suis parti dans la bonne direction avec mon code ?

Ci-joint mon programme : https://www.cjoint.com/c/FCywz3JzAwt

Merci de votre aide

Cordialement
A voir également:

3 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 713
25 mars 2016 à 10:23
Bonjour,

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 ;-)
0
mijean94 Messages postés 413 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 12 septembre 2024 11
25 mars 2016 à 11:51
Bonjour et merci pour le code

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
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 713
25 mars 2016 à 14:10
Bonjour,

<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.
0
mijean94 Messages postés 413 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 12 septembre 2024 11
25 mars 2016 à 14:18
Re,

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
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 713
25 mars 2016 à 18:24
Bonjour,

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 :
Cells(Range("ligne_ref").Row, 3).Offset(-1, 0).Resize(1, 5).merge


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.
0
mijean94 Messages postés 413 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 12 septembre 2024 11 > gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020
25 mars 2016 à 19:55
re,

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
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 713
25 mars 2016 à 23:42
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.
0
mijean94 Messages postés 413 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 12 septembre 2024 11
26 mars 2016 à 00:03
re,

l'importance c'est le résultat, est il est préférable d'avoir une solution par une personne qui connaît le ode qu'un bricolage comme j'essaye de le faire.

Je ferais les test demain matin.

Merci pour ton aide.

Cordialement
0
mijean94 Messages postés 413 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 12 septembre 2024 11
26 mars 2016 à 00:24
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.

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
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 713
26 mars 2016 à 08:36
Bonjour,

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

0
mijean94 Messages postés 413 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 12 septembre 2024 11
26 mars 2016 à 08:59
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
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 713
26 mars 2016 à 09:05
Bonjour,

Est-il possible de copier le commentaire qui est dans une cellule avec la copie.
Je t'ai rajouté la copie des commentaires mais tu n'as pas de commentaires !

Qu'appelles-tu "commentaires" ?
0
mijean94 Messages postés 413 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 12 septembre 2024 11
26 mars 2016 à 11:49
Re,

Dans la cellule C12, il y a un commentaire que j'avais ajouté par clic droit puis ajouter commentaire où il y a la consigne "il faut renseigner les lignes en rouge"

cordialement
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 713
26 mars 2016 à 11:57
Re,

Dans la cellule C12, dans une cellule cachée : je répète encore mais personne ne la vois !
0
mijean94 Messages postés 413 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 12 septembre 2024 11 > gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020
Modifié par mijean94 le 26/03/2016 à 12:30
re,


oui elle est effectivement cachée, mais comme je l'explique dans mon post 13, cachée ou pas, il n'y a pas la copie du commentaire ?

cordialement
0