aide sur formule vba

  • Initiateur de la discussion Initiateur de la discussion angoul
  • 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 !

angoul

XLDnaute Impliqué
bonjour
j'ai besoin d'un petit coup de main pour modifier ma formule vba

j'ai ma formule qui va chercher dans une feuille ce que je saisie et la reparti dans d'autre feuille. Pour sa tous marche super

le seul probleme c'est que mes lignes se s'ajoute pas mes s'ecrase l'une apres l'autre au lieu de se mettre les une en dessous des autres.
voila la formule :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 4 And Target.Row > 6 Then

With Sheets(Cells(Target.Row, 3).Value)

.Range("D" & .[A65536].End(xlUp).Row + 1) = Range("A" & Target.Row)

.Range("E" & .[B65536].End(xlUp).Row + 1) = Range("B" & Target.Row)

End With

End If

End Sub
quelqu'un peut m'aider a lui dire de copier les lignes en desous des autres a partir de la ligne 12

merci d'avance
 
Re : aide sur formule vba

Bonjour angoul, Pierrot,

Il y a en effet problème avec les End(xlUp) car dans l'autre feuille, les colonnes A et B ne se remplissent pas, et il peut aussi y avoir des cellules vides en colonnes D et E...

Une solution en recherchant dans cette feuille la dernière cellule renseignée :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Dercel As Range, lig As Long
If Target.Column = 4 And Target.Row > 6 Then
  With Sheets(Cells(Target.Row, 3).Value)
    '---Recherche la ligne à renseigner---
    Set Dercel = .Cells.Find(What:="*", After:=.[A1], LookIn:=xlFormulas, _
      SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
    If Dercel Is Nothing Then
      lig = 12
    Else
      lig = Application.Max(12, Dercel.Row + 1)
    End If
    '--------------------------------------
    .Range("D" & lig) = Range("A" & Target.Row)
    .Range("E" & lig) = Range("B" & Target.Row)
  End With
End If
End Sub

Edition : je vous laisse compléter ce code, car Sheets(Cells(Target.Row, 3)) peut dans certains cas renvoyer une erreur...

A+
 
Dernière édition:
- 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
15
Affichages
627
Réponses
4
Affichages
728
Réponses
5
Affichages
830
Réponses
14
Affichages
439
Réponses
4
Affichages
546
Réponses
3
Affichages
309
Retour