Microsoft 365 Besoin d'aide pour faire fonctionner 2 codes VBA ensemble

  • Initiateur de la discussion Initiateur de la discussion BenExcel
  • Date de début Date de début
  • Mots-clés Mots-clés
    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 !

BenExcel

XLDnaute Nouveau
Bonjour à tous,
Je me tourne vers vous car mes connaissances en VBA sont proches de 0.
J'ai créé un outil type "CVthèque" dans lequel je souhaite faire cohabiter 2 codes VBA (trouvés sur le net) dans la même feuille :

- Le premier code qui fonctionne et que j'utilise, me permet d'attribuer automatique un "ID" pour chaque entretien que je réalise.
- Le second code que j'ai trouvé sur le net, celui que je veux rajouter en plus, me permet de choisir plusieurs choix dans mes listes déroulantes (en fait c'est surtout pour une seule colonne : la "H" bassin de l'emploi dans laquelle j'ai plusieurs choix à renseigner dans mes cellules). Ps : le code est un peu "rustine" car il applique ces choix multiples à toutes les listes déroulantes de la feuille et non de cette colonne. Bref ça répond tout de même à mon besoin.

J'ai déjà le premier code qui tourne depuis un bout de temps sur ma feuille et dont je suis satisfait.
J'aimerais maintenant rajouter le seconde code et c'est là que je bloque, je n'y arrive pas !!

Pourriez-vous m'aider ?


Voici le 1er code:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If IsEmpty(Target.Offset(0, -1)) Then
With Sheets("ID").Cells(1, 1)
Target.Offset(0, -1).Value = .Value
.Value = .Value + 1
End With
End If
End If
End Sub



Voici le 2nd :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range

Set TargetRange = Me.UsedRange ' Users can change target range here
delimiter = ", " ' Users can change the delimiter here

If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False

xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
If Not (xValue1 = xValue2 Or _
InStr(1, xValue1, delimiter & xValue2) > 0 Or _
InStr(1, xValue1, xValue2 & delimiter) > 0) Then
Target.Value = xValue1 & delimiter & xValue2
Else
Target.Value = xValue1
End If
End If

Application.EnableEvents = True
On Error GoTo 0
End Sub



Merci d'avance!
 

Pièces jointes

Solution
Bonjour,
Peut être comme cela:
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If IsEmpty(Target.Offset(0, -1)) Then
With Sheets("ID").Cells(1, 1)
Target.Offset(0, -1).Value = .Value
.Value = .Value + 1
End With
End If
End If

Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range

Set TargetRange = Me.UsedRange ' Users can change target range here
delimiter = ", " ' Users can change the delimiter here

If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False

xValue2 = Target.Value...
Bonjour,
Peut être comme cela:
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If IsEmpty(Target.Offset(0, -1)) Then
With Sheets("ID").Cells(1, 1)
Target.Offset(0, -1).Value = .Value
.Value = .Value + 1
End With
End If
End If

Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range

Set TargetRange = Me.UsedRange ' Users can change target range here
delimiter = ", " ' Users can change the delimiter here

If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False

xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
If Not (xValue1 = xValue2 Or _
InStr(1, xValue1, delimiter & xValue2) > 0 Or _
InStr(1, xValue1, xValue2 & delimiter) > 0) Then
Target.Value = xValue1 & delimiter & xValue2
Else
Target.Value = xValue1
End If
End If

Application.EnableEvents = True
On Error GoTo 0

End Sub
 
Bonjour,
Peut être comme cela:
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If IsEmpty(Target.Offset(0, -1)) Then
With Sheets("ID").Cells(1, 1)
Target.Offset(0, -1).Value = .Value
.Value = .Value + 1
End With
End If
End If

Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range

Set TargetRange = Me.UsedRange ' Users can change target range here
delimiter = ", " ' Users can change the delimiter here

If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False

xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
If Not (xValue1 = xValue2 Or _
InStr(1, xValue1, delimiter & xValue2) > 0 Or _
InStr(1, xValue1, xValue2 & delimiter) > 0) Then
Target.Value = xValue1 & delimiter & xValue2
Else
Target.Value = xValue1
End If
End If

Application.EnableEvents = True
On Error GoTo 0

End Sub

Bonjour, oui cela fonctionne très bien!
Merci beaucoup, vous m'économisez un temps précieux!
 
- 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

  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
213
Réponses
4
Affichages
332
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
45
Réponses
1
Affichages
301
Réponses
11
Affichages
110
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
482
Retour