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

aide d'amélioration code VBA

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 !

papoumarc

XLDnaute Junior
Bonjour, pouvez-vous m'aider pour améliorer ce code VBA car je n'y connais rien, il m'a été donné gracieusement sur ce forum, mais je n'ai pas les compétence pour l'améliorer d'où mon appel
tout se trouve dans le fichier
Merci
 

Pièces jointes

Bonsoir

Peut être avec
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 12 And Target.Row > 2 Then
  Sheets("Feuil3").Cells.ClearContents
  ligne = 1
  For n = 3 To Sheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Row
     If Sheets("Feuil2").Range("L" & n) = 1 Then
        Sheets("Feuil2").Range("A" & n & ":B" & n).Copy Destination:=Sheets("Feuil3").Range("A" & ligne)
        ligne = ligne + 1
     End If
  Next
End If
Sheets("Feuil2").Select
End Sub

@ plus
 
Merci Cisco, c'est parfait mais
Est-il possible de faire en sorte que lorsque les lignes ont été reportée en feuille 3 et que l'on efface les lignes en feuille 2, les lignes de la feuille 3 ne s'efface pas pour que lorsqu'on écrit une nouvelle ligne sur les lignes 9 à …., ces nouvelles écritures de lignes n'efface pas les précédentes mais viennent se mettre à la suite des autres donc dans le feuille 3 (dans l'exemple ligne 4)

Merci déjà pour ce beau travail.
 
Bonjour le fil, bonjour le forum,

Puisque la macro est immédiate je ne comprends pas pourquoi une boucle !... Voilà comment je verrais les choses :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim O As Worksheet 'déclare la variable O (onglet)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

If Target.Column = 12 And Target.Row > 2 Then 'condition 1 : si le changement a lieu dans la colonne 12 (=L) et à partir de la ligne 3
    Set O = Worksheets("Feuil3") 'définit l'onglet O
    'définit la cellule de destination DEST (A1, si A1 est vide, sinon la première cellule vide de la colonne A de l'ongelt O)
    Set DEST = IIf(O.Range("A1").Value = "", O.Range("A1"), O.Range("A" & Application.Rows.Count).End(xlUp).Offset(1, 0))
    If Target.Value = 1 Then 'condition 2 : si la valeur éditée est égale à 1
        Cells(Target.Row, 1).Resize(1, 2).Copy DEST 'copie dans DEST les deux premières colonnes de la ligne éditée
        Rows(Target.Row).Delete Shift:=xlShiftUp 'supprime la ligne éditée
    End If 'fin de la condition 2
End If 'fin de la condition 1
End Sub
 
- 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
404
Réponses
6
Affichages
285
  • Question Question
Réponses
7
Affichages
308
Réponses
5
Affichages
548
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…