ajoutes lignes, fonctions if, elseif

news

XLDnaute Impliqué
Bonjour à tous du forum,

je veux ajouter des lignes vides (ayant un format MFC),
dès qu'une Range précise ( p.ex. Ranger("L8" est <>0 ),

comme la feuille se complète fur à mesure, que de nouvelles lignes sont ajoutées,

mais il y a un bug avec les fonctions if, Elseif,
que des nouvelles lignes sont ajoutées quand on clique plusieurs fois sur le bouton"ajoutes-lignes", et qu'il on devrait pas,

quand Range("L8")<>0, ajouter 5 lignes,

comment définir ?,
s'il n'y a plus de lignes complétées par après,
que la macro "Sub ajoute_lignes()" d'ajouter de lignes n'est plus répétée, comme je n'ai pas besoin d'autres nouvelles lignes vides avec format précis MFC,

uniquement quand Range("L13")<>0, que de nouvelles lignes sont ajoutées,

et puis quand Range("L23")<>0, d'autres nouvelles lignes sont ajoutées,

j'ai mis ces fonctions pour ne pas avoir trop de lignes vides, mais que fur à mesure que des lignes sont complétées que de nouvelles lignes avec format précis de MFC sont ajoutées,

ci-joint lien du fichier "ajoutes-lignes"



j'ai mis le fichier avec lien, comme le programme Winzip ne fonctionne pas
et qu'il est plus facile d'y mettre qu'avec zip a file,

merci d'avance des réponses et da'stuce comment améliorer la fonction if, elseif,

bonne soirée,
 
Dernière édition:

news

XLDnaute Impliqué
Re : ajoutes lignes, fonctions if, elseif

Bonjour,

je remets ci-dessous les expressions if, elseif que j'utilise, dont il y a un bug et que les nouvelles lignes vides ne sont pas bien ajoutées :


Sub ajoute_lignes()
' ***** ajoute de 5 ou de 10 lignes dès qu'une Range précise est <> 0
Sheets("GL").Select

If Range("L33") <> 0 Then
ajoute_10lignes
ElseIf Range("L23") <> 0 Then
ajoute_10lignes
ElseIf Range("L18") <> 0 Then
ajoute_5lignes
ElseIf Range("L13") <> 0 Then
ajoute_5lignes
ElseIf Range("L8") <> 0 Then
ajoute_5lignes
End If

End Sub
Sub ajoute_5lignes()
Application.Goto Reference:="ajoutes_5lignes"
Selection.Copy
Sheets("GL").Select
Dim Ligne5 As Long
Ligne5 = ActiveCell.SpecialCells(xlLastCell).Row
Rows(Ligne5 + 1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveSheet.Paste
Range("A2").Select
End Sub

Sub ajoute_10lignes()
Application.Goto Reference:="ajoutes_10lignes"
Selection.Copy
Sheets("GL").Select
Dim Ligne As Long
Ligne = ActiveCell.SpecialCells(xlLastCell).Row
Rows(Ligne + 1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveSheet.Paste
Range("A2").Select
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : ajoutes lignes, fonctions if, elseif

Re

Pourquoi ne pas remplacer
If Range("L33") <> 0 Then
ajoute_10lignes
ElseIf Range("L23") <> 0 Then
ajoute_10lignes
ElseIf Range("L18") <> 0 Then
ajoute_5lignes
ElseIf Range("L13") <> 0 Then
ajoute_5lignes
ElseIf Range("L8") <> 0 Then
ajoute_5lignes
End If

par
Code:
If Range("L33") <> 0 And Range("L23") <> 0  Then 
ajoute_10lignes
Else
If Range("L18") <> 0 And Range("L13") <> 0 And Range("L8") <> 0 Then
 ajoute_5lignes
End If
End If
 
Dernière édition:

news

XLDnaute Impliqué
Re : ajoutes lignes, fonctions if, elseif

Bonjour à tous du forum,

merci pour réponse de l'expression suivante:

If Range("L33") <> 0 And Range("L23") <> 0 Then
ajoute_10lignes
Else
If Range("L18") <> 0 And Range("L13") <> 0 And Range("L8") <> 0 Then
ajoute_5lignes
End If
End If


mais l'expression ne fonctionne pas,
si une des expressions n'est pas valides, p.ex. si L8 <>0 mais L13 = "",
alors la macro ne fait rien et ne commence pas être effectuée,

bonne journée,
 

news

XLDnaute Impliqué
Re : ajoutes lignes, fonctions if, elseif

Bonjour Staple1600,

le fil, lien est le même,
j'avais besoin des expressions
que toutes les lignes vides de colum(A:N) sont annulées

ainsi que d'ajouter des nouvelles lignes vides si certaiens conditions sont remplies, comme

If Range("L33") <> 0 Then ajoute_10lignes
ElseIf Range("L23") <> 0 Then ajoute_10lignes
ElseIf Range("L18") <> 0 Then ajoute_5lignes
ElseIf Range("L13") <> 0 Then ajoute_5lignes
ElseIf Range("L8") <> 0 Then ajoute_5lignes
End If


bonne journée,
 

Staple1600

XLDnaute Barbatruc
Re : ajoutes lignes, fonctions if, elseif

Bonjour

A tester et/ou adapter



If Range("L33") <> 0 Or Not IsEmpty(Range("L33") _
And Range("L23") <> 0 Or Not IsEmpty(RAnge("L23") Then
ajoute_10lignes
Else
' je te laisse modifier cette ligne comme l'autre If
ajoute_5lignes
End If
End If
 

news

XLDnaute Impliqué
Re : ajoutes lignes, fonctions if, elseif

Bonjour à tous du forum,

merci de la réponse, mais l'expression ci-dessous a déjà un bug dans la première ligne de l'expression,

If Range("L33") <> 0 Or Not IsEmpty(Range("L33") _
And Range("L23") <> 0 Or Not IsEmpty(RAnge("L23") Then
ajoute_10lignes
Else
' je te laisse modifier cette ligne comme l'autre If
ajoute_5lignes

ci-dessous expression fonctionnant,
Dans le fichier("input" j'ai mis les formules suivantes, afin que la macro fontionne [ Range("Q40") = SI(GL!$L$73<>0;;SI(GL!$L$63<>0;5 ]
ce n'est peut-être pas le plus simple ou meilleur fonction vba, mais cela fonctionne,

Sub ajoute_lignes()
format_input_ajoute_lignes
Sheets("input").Select

If Range("Q41") <> 0 Then
ajoutes_10lignes
ElseIf Range("Q40") <> 0 Then ' =SI(GL!$L$73<>0;;SI(GL!$L$53<>0;5;
ajoutes_10lignes
ElseIf Range("Q39") <> 0 Then
ajoutes_10lignes
ElseIf Range("Q38") <> 0 Then
ajoutes_10lignes
ElseIf Range("Q37") <> 0 Then
ajoutes_10lignes
ElseIf Range("Q36") <> 0 Then
ajoutes_5lignes
ElseIf Range("Q35") <> 0 Then
ajoutes_5lignes
ElseIf Range("Q34") <> 0 Then
ajoutes_5lignes
ElseIf Range("Q33") <> 0 Then
ajoutes_5lignes
ElseIf Range("Q32") <> 0 Then ' =SI(GL!$L$13<>0;;SI(GL!$L$8<>0;5;
ajoutes_5lignes
End If
End Sub

Sub format_input_ajoute_lignes()
Sheets("input").Select
Range("P32").FormulaR1C1 = "=GL!R8C12"
Range("P33").FormulaR1C1 = "=GL!R13C12"
Range("P34").FormulaR1C1 = "=GL!R18C12"
Range("P35").FormulaR1C1 = "=GL!R23C12"
Range("P36").FormulaR1C1 = "=GL!R28C12"
Range("P37").FormulaR1C1 = "=GL!R33C12"
Range("P38").FormulaR1C1 = "=GL!R43C12"
Range("P39").FormulaR1C1 = "=GL!R53C12"
Range("P40").FormulaR1C1 = "=GL!R63C12"
Range("P41").FormulaR1C1 = "=GL!R73C12"
Range("E8").Select
End Sub

Sub ajoutes_5lignes()
Application.Goto Reference:="ajoutes_5lignes"
Selection.Copy
Sheets("GL").Select
Dim Ligne5 As Long
Ligne5 = ActiveCell.SpecialCells(xlLastCell).Row
Rows(Ligne5 + 1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveSheet.Paste
Range("A2").Select
End Sub

Sub ajoutes_10lignes()
Application.Goto Reference:="ajoutes_10lignes"
Selection.Copy
Sheets("GL").Select
Dim ligne As Long
ligne = ActiveCell.SpecialCells(xlLastCell).Row
Rows(ligne + 1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveSheet.Paste
Range("A2").Select
End Sub
 
Dernière édition:

Discussions similaires

Réponses
6
Affichages
1 K
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote