Demande d'aide sur: Private Sub Worksheet_Change

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

degap05

XLDnaute Impliqué
Bonjour, je sollicite de l'aide car je n'y arrive pas.

Voilà une macro qui fonctionne, fournie par un membre du forum🙂🙂🙂:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig, derlig, num1 As Integer
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
If Target.Column = 27 Then
lig = Target.Row
derlig = Sheets("Ordonnancier").Range("A65500").End(xlUp).Row + 1
Sheets("Ordonnancier").Cells(derlig, 2).Value = Cells(lig, 2).Value
' tenir compte des 2 colonnes cachées 18 à 24 au lieu de 17 à 23
Sheets("Ordonnancier").Cells(derlig, 3).Value = Cells(lig, 3).Value
Sheets("Ordonnancier").Cells(derlig, 4).Value = Cells(lig, 10).Value
Sheets("Ordonnancier").Cells(derlig, 5).Value = Cells(lig, 9).Value
Sheets("Ordonnancier").Cells(derlig, 6).Value = Cells(lig, 12).Value
Sheets("Ordonnancier").Cells(derlig, 7).Value = Cells(lig, 11).Value
Sheets("Ordonnancier").Cells(derlig, 8).Value = Cells(lig, 20).Value
Sheets("Ordonnancier").Cells(derlig, 9).Value = Cells(lig, 26).Value
Sheets("Ordonnancier").Cells(derlig, 10).Value = Cells(lig, 8).Value
Sheets("Ordonnancier").Cells(derlig, 11).Value = Cells(lig, 21).Value
Sheets("Ordonnancier").Cells(derlig, 12).Value = Cells(lig, 22).Value
Sheets("Ordonnancier").Cells(derlig, 13).Value = Cells(lig, 23).Value
Sheets("Ordonnancier").Cells(derlig, 14).Value = Cells(lig, 24).Value
Sheets("Ordonnancier").Cells(derlig, 15).Value = Cells(lig, 25).Value
Sheets("Ordonnancier").Cells(derlig, 1).Value = ActiveSheet.Name
num1 = Sheets("Ordonnancier").Cells(derlig - 1, 16).Value
Sheets("Ordonnancier").Cells(derlig, 16).Value = num1 + 1
End If
End Sub

Dans la même commande, comment passer de:

If Target.Column = 27 Then
Sheets("Ordonnancier").Cells(derlig, 1).Value = ActiveSheet.Name

à:
If Target.Column = 20 Then
Sheets("Nominatif").Cells(derlig, 1).Value = ActiveSheet.Name,

De telle manière que lorsque les cellules de la colonne 27 seront renseignées, l'information sera copiée dans la feuille "Ordonnancier" et lorsque les cellules de la colonne 20 seront renseignées l'information sera copiée dans la feuille "Nominatif".

Autrement dit comment compléter la première commande qui fonctionne trés bien ou faire une autre commande identique dans la même feuille.

Merci beaucoup.
 
Re : Demande d'aide sur: Private Sub Worksheet_Change

Salut degap05,

A condition bien sur que tes feuilles Ordonnancier et Nominatif soient de meme nature, ca devrait fonctionner (Pas teste).

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig, derlig, num1 As Integer
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
If Target.Column = 27 Then
lig = Target.Row
derlig = Sheets("Ordonnancier").Range("A65500").End(xlUp).Row + 1
Sheets("Ordonnancier").Cells(derlig, 2).Value = Cells(lig, 2).Value
' tenir compte des 2 colonnes cachées 18 à 24 au lieu de 17 à 23
Sheets("Ordonnancier").Cells(derlig, 3).Value = Cells(lig, 3).Value
Sheets("Ordonnancier").Cells(derlig, 4).Value = Cells(lig, 10).Value
Sheets("Ordonnancier").Cells(derlig, 5).Value = Cells(lig, 9).Value
Sheets("Ordonnancier").Cells(derlig, 6).Value = Cells(lig, 12).Value
Sheets("Ordonnancier").Cells(derlig, 7).Value = Cells(lig, 11).Value
Sheets("Ordonnancier").Cells(derlig, 8).Value = Cells(lig, 20).Value
Sheets("Ordonnancier").Cells(derlig, 9).Value = Cells(lig, 26).Value
Sheets("Ordonnancier").Cells(derlig, 10).Value = Cells(lig, 8).Value
Sheets("Ordonnancier").Cells(derlig, 11).Value = Cells(lig, 21).Value
Sheets("Ordonnancier").Cells(derlig, 12).Value = Cells(lig, 22).Value
Sheets("Ordonnancier").Cells(derlig, 13).Value = Cells(lig, 23).Value
Sheets("Ordonnancier").Cells(derlig, 14).Value = Cells(lig, 24).Value
Sheets("Ordonnancier").Cells(derlig, 15).Value = Cells(lig, 25).Value
Sheets("Ordonnancier").Cells(derlig, 1).Value = ActiveSheet.Name
num1 = Sheets("Ordonnancier").Cells(derlig - 1, 16).Value
Sheets("Ordonnancier").Cells(derlig, 16).Value = num1 + 1
End If
If Target.Column = 20 Then
lig = Target.Row
Sheets("Nominatif").Cells(derlig, 1).Value = ActiveSheet.Name
Sheets("Nominatif").Cells(derlig, 2).Value = Cells(lig, 2).Value
' tenir compte des 2 colonnes cachées 18 à 24 au lieu de 17 à 23
Sheets("Nominatif").Cells(derlig, 3).Value = Cells(lig, 3).Value
Sheets("Nominatif").Cells(derlig, 4).Value = Cells(lig, 10).Value
Sheets("Nominatif").Cells(derlig, 5).Value = Cells(lig, 9).Value
Sheets("Nominatif").Cells(derlig, 6).Value = Cells(lig, 12).Value
Sheets("Nominatif").Cells(derlig, 7).Value = Cells(lig, 11).Value
Sheets("Nominatif").Cells(derlig, 8).Value = Cells(lig, 20).Value
Sheets("Nominatif").Cells(derlig, 9).Value = Cells(lig, 26).Value
Sheets("Nominatif").Cells(derlig, 10).Value = Cells(lig, 8).Value
Sheets("Nominatifr").Cells(derlig, 11).Value = Cells(lig, 21).Value
Sheets("Nominatif").Cells(derlig, 12).Value = Cells(lig, 22).Value
Sheets("Nominatif").Cells(derlig, 13).Value = Cells(lig, 23).Value
Sheets("Nominatif").Cells(derlig, 14).Value = Cells(lig, 24).Value
Sheets("Nominatif").Cells(derlig, 15).Value = Cells(lig, 25).Value
Sheets("Nominatif").Cells(derlig, 1).Value = ActiveSheet.Name
num1 = Sheets("Nominatif").Cells(derlig - 1, 16).Value
Sheets("Nominatif").Cells(derlig, 16).Value = num1 + 1
End If

End Sub

Bonne journee

Olivier
 
Re : Demande d'aide sur: Private Sub Worksheet_Change

Bonjour, merci de ta réponse rapide. Hélas, cela ne fonctionne pas, aprés adaptation de ma part. Cela devrait ressembler à:


Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig, derlig, num1 As Integer
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
If Target.Column = 27 Then
lig = Target.Row
derlig = Sheets("Ordonnancier").Range("A65500").End(xlUp).R ow + 1
Sheets("Ordonnancier").Cells(derlig, 2).Value = Cells(lig, 2).Value
Sheets("Ordonnancier").Cells(derlig, 1).Value = ActiveSheet.Name
num1 = Sheets("Ordonnancier").Cells(derlig - 1, 16).Value
Sheets("Ordonnancier").Cells(derlig, 16).Value = num1 + 1

End If
If Target.Column = 20 Then
lig = Target.Row
Sheets("Nominatif").Range("B9").Value = ActiveSheet.Name

End If
End Sub

J'ai volontairement écourté la formule.

Merci.
 
- 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
4
Affichages
211
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
532
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
184
Réponses
2
Affichages
162
Réponses
35
Affichages
2 K
Réponses
16
Affichages
1 K
Réponses
3
Affichages
513
Réponses
0
Affichages
470
Retour