XL 2016 INSERTION DE LIGNE AVEC COMMENTAIRES

RIVOIRA

XLDnaute Nouveau
Bonjour,

bien voila je débute dans le langage vba, et souhaite apprendre quelques notions dans le cadre de ma profession.
J'ai réalisé actuellement un petit programme qui permet de masquer des lignes qui sont répétitives.

Maintenant Je voudrais aller plus loin.

Je voudrais créer une deuxième macro qui permettrait d'insérer une ou plusieurs lignes en dessous de chaque ligne existante, et y inclure des textes dans chaque cellules.
Je vous joins le fichier, avec la macro que j'ai crée pour le masquage des lignes, ainsi qu'un commencement de la macro suivante qui est vraiment perfectible!

Par exemple je voudrais ajouter 4 lignes en dessous de la ligne ou se trouve "511" en E7 et y inclure des textes différents pour chaque ligne ajouté et dans chaque cellule.
par exemple: "VALOPUR" sur la première cellule, "SONDE" sur la deuxième, "1" sur la troisième, "050436" sur la quatrième, et "511" (qui est la chiffre clé pour l'insertion des ligne)

Et ainsi de suite pour chaque texte dans les cellules E8, E17, etc... jusqu'à la fin.

Pouvez vous m'aider et me dire si cela n'est pas trop compliqué ?
je vous remercie par avance de votre aide
 

Fichiers joints

RIVOIRA

XLDnaute Nouveau
Bonjour,

Un grand merci. C'est exactement cela.
Une dernière petite question. Il faudrait que les macros s'exécute q' une seule fois, et qu'elle évite de rajouter des lignes à chaque fois qu'on l'active.

Bonne soirée.
 

fanfan38

XLDnaute Accro
Bonjour
Je te propose d'ajouter après: If Cells(lig, 5).Value = "511" Then
rep = Application.CountIf(Range(Cells(lig, 5), Cells(lig + 5, 5)), "511") 'compte le nombre de 511 dans les 5 lignes suivantes
If rep = 5 Then
MsgBox ("il semble que les composants sont déjà insérer")
Else

N'oublie pas le end if avant le elseif....
et le dim rep as integer en début de macro

A+ François
 

RIVOIRA

XLDnaute Nouveau
Bonjour Fanfan,

merci pour ta réponse. Ma macro fonctionne bien mais à priori je suis obligé d'écrire les ligne d'insertions par ordre d'affichage, du listing ( de haut en bas). Ce qui ne sera pas forcément le cas. Peut-on faire en sorte que cela soit pas systématiquement dans un ordre bien établi.

Encore merci
 

fanfan38

XLDnaute Accro
Bonjour,
Je te propose de modifier la macro INSERER_COMPOSANT comme suit:
Else
'ici on insère 4 lignes
Range(Cells(lig + 1, 1), Cells(lig + 4, 1)).EntireRow.Insert shift:=xlDown
'ensuite on rempli les cellules (comme on veut)...
ou comme ça Range(Cells(lig + 1, 1), Cells(lig + 4, 1)).Value = "VALOPUR"
ou comme ça Cells(lig + 1, 2).Value = "SONDE"
Cells(lig + 2, 2).Value = "SONDE"

lig = lig + 4
End If

A+ François
 

RIVOIRA

XLDnaute Nouveau
désolé mais je n'ai pas tout compris, ce que tu souhaites faire. Je vais peut être reformuler ma requête de façon plus précise.
à priori, les lignes d'insertion de macro qu'il faut écrire doivent respectivement correspondre à l'ordre d'écriture établi sur listing Excel . Sinon cela ne fonctionne pas.
PaSi on écrit les lignes de macro de la 502-B503 avant les lignes de macro 517, les lignes d'insertion ne sont pas prise en compte.
A priori il semblerai que je devrais donc écrire d'abord mes lignes de macro pour la 511, ensuite celles de la 517, ensuite celles de la 502-B503 etc...
J'aimerai avoir la liberté d'écrire dans n'importe quel ordre mon listing.
Par exemple: le 801 avant le 511, et après le 517. Ou une autre combinaison.
 

fanfan38

XLDnaute Accro
on peut ajouter une boite de saisie
dim mamodif as string
mamodif=Inputbox("Saisir la valeur à modifier:")
For lig = 5 To DerniereLigne
If Cells(lig, 5).Value = mamodif Then...

A+ François
 

Discussions similaires


Haut Bas