Macro ne voulant pas fonctionner ds pls cas

Etienne Soler -  
 Etienne Soler -
Bonjour, voici la macro que j'ai réalisé, elle consiste à créer une nouvelle feuille et y coller les des lignes d'une autre feuille comprise ds le meme classeur en fonction de valeur préalablement fixer par la macro pour désigner les lignes de cette première feuille.

en gros, dans le premier tableau g des lignes affecter des valeurs
BR
DO
AS
AC
....

ma macro fonctionne correctement pour les deux premiers cas mais ensuite elle ne fonctionne plus, elle me créé la feuille mais ne copie plus les lignes dans cette nouvelles feuille.

Voici la macro

Sub commandeBRENT()
Dim DerLig As Integer
Dim ligne As Integer

'calcul de la dernière ligne de la feuille EnCours
With Sheets(Sheets.Count)
DerLig = .Range("C" & .Rows.Count).End(xlUp).Row

End With

ligne = 23

'on identifie chaque entreprise par ces deux première lettres en colonne E'
Do Until ligne > DerLig
Range(Cells(ligne, "E"), Cells(ligne, "E")).Select
ActiveCell.FormulaR1C1 = "=LEFT(RC[-4],2)"

ligne = ligne + 1
Loop

'Création de la feuille BR'
ligne = 23

Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
Sheets(Sheets.Count).Name = "BR"

Columns("A:A").ColumnWidth = 64
Columns("B:B").ColumnWidth = 50
Columns("C:C").ColumnWidth = 9.57
Columns("D:D").ColumnWidth = 4.14

Rows("20:20").Select

ActiveWindow.FreezePanes = True

Sheets(Sheets.Count - 2).Select
Range("A1:B4").Select
Selection.Copy
Sheets("BR").Select
Range("A1").Select
ActiveSheet.Paste
Sheets(Sheets.Count - 2).Select
Range("A22:D22").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("BR").Select
Range("A19").Select
ActiveSheet.Paste
Range("A16").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "COMMANDE BRENT"
Range("A17").Select


'copier les lignes BRENT'

Sheets(Sheets.Count - 2).Select

Do Until ligne > DerLig
If Range(Cells(ligne, "E"), Cells(ligne, "E")).Value = "BR" Then

Range(Cells(ligne, "A"), Cells(ligne, "D")).Select
Selection.Copy
Sheets("BR").Select
Range(Cells(ligne, "A"), Cells(ligne, "A")).Select
ActiveSheet.Paste
Sheets(Sheets.Count - 2).Select
ligne = ligne + 1
Else
ligne = ligne + 1
End If

Loop

MsgBox "La commande Brent a été réalisée avec succès "

End Sub

si une personne a une idée d'ou peut provenir mon pb, ou qui souhaite plus d'informations vous êtes les bienvenus !!!

2 réponses

  1. AllezLesBleus
     
    retourne à l'école
    0
    1. Etienne Soler
       
      ben écoute j'y suis déjà a l'école mais bon ça fait deux semaines que je fais du vba, donc pour des com comme celui la je pense que tu peux t'abstenir à moins que tu ais de bonnes raisons que j'attends avec impatience !
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    peut être un problème ici
    Sheets(Sheets.Count).Name = "BR"
    la feuille créée prend toujours le même nom, ça va coincer
    ton code peut très nettement s'améliorer
    le mieux est d'envoyer une partie de ton fichier au format excel 2003, sans données confidentielles, su cjoint.com et de joindre le lien obtenu à ton prochan message

    bonne suite
    0
    1. Etienne Soler
       
      merci de ta réponse mais en fait j'ai trouvé ce qui cloché,
      Pour répondre deja, en fait chaque valeur " BR" "DO" "SA" je créé une macro a chaque fois, donc le nom de la feuille est changé.
      le pb étais au moment ou je calcul la dernière ligne de ma feuille, vu que je créé une nouvelle feuille il faut que je calcul ma dernière ligne sur ma feuille de départ d'ou le :

      With Sheets(Sheets.Count - 2)
      DerLig = .Range("K" & .Rows.Count).End(xlUp).Row

      End With
      0