Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

insérer lignes si critères [Résolu]

  • Initiateur de la discussion Initiateur de la discussion fenec
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

fenec

XLDnaute Impliqué
Bonjour le forum,

Comme le dis le titre je voudrais insérer une ligne si les critères sont remplie.
Je ne sais si tout est clair alors vous joint un fichier

Cordialement

Philippe
 

Pièces jointes

Dernière édition:
Re : insérer lignes si critères

Bonjour fenec,

Pas bien claire cette affaire.

Quand il y en a 2 vous en voulez 3 c'est ça ?

Et quand il y en a 3 ou 4 (ou plus) vous en voulez combien ??

A+
 
Re : insérer lignes si critères

Re,

Bon, si les textes des codes à traiter sont définis il suffit de les mettre dans un Array :

Code:
Sub Insereligne()
Dim code, c, i As Long
code = Array("D712", "D727") 'les codes à traiter
Application.ScreenUpdating = False
For Each c In code
  i = Application.Match(c, [A:A], 0)
  If IsNumeric(i) Then
    Cells(i + 1, "A").Insert xlDown
    Cells(i + 1, "A") = c
  End If
Next
End Sub
Fichier joint.

A+
 

Pièces jointes

Re : insérer lignes si critères

Re, bonjour Job75

Vais essayer d’être un peu plus précis

Je démarre avec un tableau de x lignes, à l’aide d’une macro je souhaite insérer une ligne sous les codes « D712 et D727 » en reprenant les formules et le format et que l’opération se reproduise à chaque fois que j’ai besoin d’une nouvelle ligne.

Donc pour suivre votre remarque :

Je démarre avec une ligne par code,
Je clique j’obtiens 2 lignes avec les codes 712 et 2 avec le code 727
Je reclique j’obtiens 3 lignes avec le code 712 et 3 avec le code 727
Je re reclique j’obtiens 4 lignes avec le code 712 et 4 lignes avec le code 727
Je re re reclique j’obtiens 5 lignes avec le code 712 et 5 lignes avec le code 727
Etc…

J’espère que ces précisions vous éclairerons

Cordialement

Philippe
 

Pièces jointes

Re : insérer lignes si critères

Re

Venant de tester ta proposition la première insertion c’est ok
Ensuite les lignes s’insèrent au dessus de la première ligne insérée et non en dessous

A+
 

Pièces jointes

Re : insérer lignes si critères

Re,

Si les codes sont classés comme dans votre fichier il est facile de récupérer le dernier code 712 ou 727.

Il suffit d'ôter le , 0 dans Application.Match :

Code:
Sub Insereligne()
Dim code, c, i As Long
code = Array("D712", "D727") 'les codes à traiter
Application.ScreenUpdating = False
For Each c In code
  i = Application.Match(c, [B:B])
  If IsNumeric(i) Then
    Cells(i + 1, "B").EntireRow.Insert
    Cells(i + 1, "B") = c
  End If
Next
End Sub
A+
 
Re : insérer lignes si critères

Re,

Cette solution avec Find fonctionne toujours, que les codes soient triés ou pas :

Code:
Sub Insereligne()
Dim code, c, cel As Range
code = Array("D712", "D727") 'les codes à traiter
Application.ScreenUpdating = False
For Each c In code
  Set cel = [B:B].Find(c, , xlValues, xlWhole, , xlPrevious)
  If Not cel Is Nothing Then
    cel(2).EntireRow.Insert
    cel(2) = c
  End If
Next
End Sub
A+
 
Re : insérer lignes si critères

Bonsoir le forum, Job75
Venant de rentrer je test et re si problème mais déjà un merci pour le temps passé pour tes propositions
Te tiens au courant au plus tot merci encore Job
A+
Philippe
 
Re : insérer lignes si critères

Bonjour le forum, Job75

Merci vos deux propositions correspondent à ce je désire mais une petite chose encore si pas trop abuser de votre temps.
Serait-il possible lors de l’insertion de la ligne que la macro reprenne les données et formule de toute la ligne et pas uniquement le code
A+
Philippe
 
Re : insérer lignes si critères

Re,
Viens de modifier comme suis, mais je rencontre une erreur d’exécution ‘424’ :
Objet requis
Code:
Sub Insereligne() 
 Dim code, c, cel As Range
 code = Array("D712", "D727") 'les codes à traiter
 Application.ScreenUpdating = False
 For Each c In code
   Set cel = [B:B].Find(c, , xlValues, xlWhole, , xlPrevious)
   If Not cel Is Nothing Then
     cel(2).EntireRow.Insert
     'cel(2) = c
     c.EntireRow.Copy cel(2).EntireRow
     
   End If
 Next
 End Sub

A+
 
Re : insérer lignes si critères

Bonjour le forum, Job75

Déjà un grand merci cela fonctionne parfaitement
Oui, une grosse faute d'inattention, je n'avais pas testé...
L'erreur est humaine pas de soucis

Encore une petite question sans vouloir abuser

Insérant une ligne en reprenant les données de la ligne supérieure est -il possible de modifier le contenue de deux cellules dans cette nouvelle ligne et si possible que les formules des lignes antérieurs soient remplacer par leurs valeurs

j'espère ne pas trop abuser

Philippe
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
279
  • Question Question
Microsoft 365 Fonction si
Réponses
7
Affichages
223
Réponses
2
Affichages
152
Réponses
4
Affichages
224
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…