Insérer X lignes lorsque les cellules contiennent X

Bonjour,

Je suis débutant en macro et je rencontre un soucis pour réaliser cette derniere. En effet, mon besoin est le suivant :

J'ai un onglet 1 avec une liste d'activités , des dates et un nombre de ressources. Mon besoin serait de créer une macro qui lorsque je renseigne le nombre de ressources, ce nombre corresponde au nombre d

e lignes à insérer en dessous afin que je puisse répartir les heures de ces différentes ressources sur mes projets.

Je ne sais pas dans quelle mesure cela est il envisageable avec excel et si il est possible d'envisager la création d'une liste déroulante en fonction de l'onglet effectif.

Pour le moment, j'ai réussi à insérer un nombre de lignes en fonction de la valeur entrée dans la cellule grâce au code suivant :

Sub test_macro()

Dim i As Integer

Sheets(1).Select

Range("C6").Select

i = Range("C6").Value

Rows("7:" & 6 + i & "").Select

Selection.Insert shift:=xlDown

End Sub

Mon problème est que je n'arrive pas à modifier la cellule d'entrée de la valeur.

Vous trouverez ci-joint un exemple concret de la situation

Merci d'avance pour votre aide

Bonjour

Un essai à tester.

Les lignes se créent dès que tu valides le nombre de ressources dans la colonne D.

Cela te convient-il ?

Bye !

Bonjour gmb,

Merci une nouvelle fois par ton aide si précieuse.

Cela me parait très bien ! Je me demandais par contre si il était envisageable que le nombre de lignes soient toujours identiques au nombre de ressources.

Je m'explique, lorsque l'on saisi dans une cellule 2 personnes, il y a 2 lignes qui se créent --> parfait. Cependant, lorsque je modifie cette donnée et que je mets 3 , est-ce envisageable de créer uniquement 1 ligne supplémentaire (= 2+1= 3 lignes).

Merci à toi

Bonne journée

Bonjour

Nouvel essai.

Bye !

Bonjour,

Merci à vous ! C'est exactement ce que je voulais !

Bonne continuation et merci encore pour votre aide gmb.

Bonjour à tous,

Je relance le sujet car j'ai une subtilité à ajouter à ce code...

Je souhaite Ajouter/supprimer des lignes en rapport avec le numéro afficher dans une liste contenant 5 chiffres (de 1 à 5). La ligne 1 est toujours présente par défaut donc l'ajout/suppression interviendrait qu'a partir du numéro 2 jusqu'au 5.

A l'insertion je voudrais donc que l'insert/suppression agisse après la première ligne de donnée et qu'il ajoute/supprime a partir du bas...

L'image ci jointe vous aidera à comprendre.

PS: J'ai tenté de jouer avec la fonction Offset...sans réussir.

Merci à tous par avance.

demo

Bonjour à tous,

Merci beaucoup Troxler pour la création du topic et merci mille fois GMB pour la solution !

J'essaye d'adapter la v2 de votre macro afin que les lignes s'ajoutent au-dessus et non pas au dessous de la ligne concernée mais sans succès. Bon il faut dire que ça fait 10 ans que je n'ai pas utilisé de macro J'ai interverti le ".Insert shift:=xlUp" et ".Insert shift:=xlDown" sans succès. Mais ce n'est peut-être pas la bonne piste du tout ?

D'avance, je vous remercie si vous pouvez éclairer ma lanterne !)

Bonjour

Nouvelle version.

Bye !

Ohlala merci GBM !!!

Qu'est ce que c'est sympa ! Ca va me permettre d'avancer tellement plus vite ! Merci infiniment ^^

Bon j'ai encore un problème d'application

Voilà mon fichier (il n'est pas très propre car j'ai dû appliquer en colonne C une formule SI (calculant le nombre de numéros manquants) pour déterminer les fameux nombre de lignes à ajouter).

Mon but en fait est de créer des lignes supplémentaires pour chaque référence manquante -c'est à afin de pouvoir compléter ensuite ces références.

Comme en principe, il faudrait que même la valeur 1 génère la création d'une ligne, j'ai essayé de passer la valeur "If target.count > 1" pour la passer à zéro, mais ce n'est pas la solution semble-t-il.

PS : Certaines références (les bis, ter.. par exemple) renvoient des erreurs (#VALEURS!) que je corrigerai à la main, mais comme j'ai 20 000 lignes à peu près pour chaque fichier (ici j'envoie un extrait de mon fichier F, mais j'ai tout l'alphabet ) la création automatique de ligne serait déjà une sacrée avancée.

Voilà... Merci encore si jamais vous aviez l'occasion de m'aider de nouveau !

Bonjour

Pour changer un peu, les lignes se créent dès que tu fais un double clic dans la colonne D. Et si la cellule contient un " #VALEUR! ", celui-ci est assimilé à un " 1 " et une ligne se crée.

Cela te convient-il ?

Bye !

Merci beaucoup de tout ton travail !!! Je ne sais pas quoi dire !

Malheureusement ça ne fonctionne pas sur ma machine en raison d'un contrôle active X semble-t-il. Je vais voir si je peux trouver une solution... Bonne journée en attendant et encore merci

Bonjour, j'ai enfin pu essayer d'ouvrir votre fichier sur un autre pc mais j'obtiens le même message d'erreur au moment d'exécuter la macro - à savoir- "les informations de licence de ce composant sont introuvables. Vous n'avez pas la licence adéquate pour utiliser cette fonctionnalité dans l'environnement de création"... :/ je ne l'avais pas eu avec les fichiers précédents. Je vais essayer sur un vieux pc hors session de teletravail pour voir si cela change quelquechose mais si vous avez une solution je suis preneuse

Bonne journée !

Bonjour à tous, bonjour GMB si vous êtes là.

J'ai finalement pu ouvrir les derniers fichier [j'ai mis de côté ma session pro qui a l'air de faire barrage aux macros et réinstallé Excel sur mon pc personnel sur lequel je n'avais plus que libre office depuis l'expiration de mon abonnement ].

La dernière version que vous m'avez proposée résolvant aussi les erreurs liées aux doublons est vraiment extra GMB, merci mille fois !

L'ultime question que je me permets de vous poser est s'il existe un moyen pour que le calcul de toute la colonne D se fasse d'un coup - c'est à dire que lorsque le fichier est ouvert dès la première consultation, l'ensemble des lignes vides apparaisse sans qu'il soit nécessaire de cliquer sur chaque valeur dans D ?

D'avance, merci encore de votre aide si vous me lisez,

Delphine

Bonjour

Nouvelle version

Bye !

Bonjour,

Oh merci GMB, c'est trop beau (partie didactique inclue) !

Merci mille fois vraiment de votre aide et du temps que vous y avez passé !

Je vais l'appliquer maintenant - au boulot, au boulot !

Encore merci

Bonjour à tous encore une fois, et à GMB en particulier pour une ultime question (on y croit)...

Sur les deux tiers de mes listes il vaudrait mieux que les cellules valeurs ne créent pas de lignes supplémentaires (il ne s'agit pas dans ces cas là de numéros manquants mais de systèmes de numérotation différents). Je dois donc ensuite retirer les lignes nouvellement créées à la main sinon.

J'ai bien essayé de supprimer pour ces fichiers de votre macro la partie :

"Range("D2:D" & derln).Replace What:=CStr("#VALEUR!"), Replacement:=1, LookAt:=xlPart

For i = 2 To derln

If IsError(Cells(i, "D")) Then Range("D" & i) = 1

Next i"

Mais ça n'est pas la bonne méthode semble-t-il

Pouvez-vous m'aiguiller une dernière fois? Merci d'avance, j'ai honte.

Bonjour

Je suis désolé mais je ne comprends pas tes explications.

Peut-être qu'avec un exemple...

Bye !

Bonjour et merci de votre réponse encore!

Ah pardon -

Dans la macro "exempleDelphine v5.xls" par exemple, une ligne vierge est créée entre le numéro F5 et F7 - là c'est impeccable puisqu'il manque le F6 et qu'il faudra donc par la suite que je remplisse cette ligne.

Par contre la macro décèle le "F15 bis" comme une erreur, puisque le "bis" n'est pas reconnu comme un numéro comptable. Elle transforme le "#VALEUR!" en "1" et une ligne vierge est donc créée. Mais dans la réalité, le "F15 bis" est bien le numéro suivant le "F 15". Donc il n'y aura pas de ligne à remplir entre ces deux numéros.

Donc au final, l'idéal serait que les erreurs ne soient pas assimilées à des valeurs "1" pour qu'elles ne créent pas de lignes vierges.

Voilà merci si vous voulez bien encore vous pencher sur mon cas

Rechercher des sujets similaires à "inserer lignes lorsque contiennent"