Microsoft 365 Vba - Nom ambigu detecté

Lazz

XLDnaute Nouveau
Bonjour,

Je ne suis pas du tout caler en VBA mais j'ai trouver un code qui fais ce que je recherche et qui fonctionne bien.
J'aimerai maintenant reproduire le même programme mais pour des plages différentes. J'ai copié coller le programme en changeant les plage de cellule mais cela me met "nom ambigu détecté" et je ne sais pas quoi changer pour que cela fonctionne.

je vous met une photos pour illustrer ce que je raconte
1637748670370.png

pouvez vous m'aidez ?
merci :)
 

Lazz

XLDnaute Nouveau
Bonjour,
Tu as deux fois la même procédure !

Je t'invite à les fusionner dans la même.

Je l'aurai bien fait pour toi mais je m'etrises pas bien Photoshop !
oui mais je ne sais pas comment les fusionner.
je t'envoie le programme:

Public Sub Worksheet_change(ByVal Target As Range)
Dim rng2 As Range

If Target.Column = 8 Then
If Target.Value = "oui" Then
Set rng2 = Range(Cells(Target.Row, Target.Column + 8), Cells(Target.Row, Target.Column + 8))
rng2.Activate
Do While (IsEmpty(rng2.Value))
MsgBox ("Veuillez renseigner cette cellule")
rng2.Value = InputBox("oui ou non ?")
Loop
End If
End If
End Sub

Public Sub Worksheet_change(ByVal Target As Range)
Dim rng2 As Range

If Target.Column = 16 Then
If Target.Value = "" Then
Set rng2 = Range(Cells(Target.Row, Target.Column + 1), Cells(Target.Row, Target.Column + 1))
rng2.Activate
Do While (IsEmpty(rng2.Value))
MsgBox ("Veuillez renseigner cette cellule")
rng2.Value = InputBox("oui ou non ?")
Loop
End If
End If
End Sub
 

Phil69970

XLDnaute Accro
Re

Que veux tu faire exactement avec ton fichier ?
VB:
Public Sub Worksheet_change(ByVal Target As Range)
Dim rng2 As Range

If Target.Column = 8 Then
    If Target.Value = "oui" Then
        Set rng2 = Range(Cells(Target.Row, Target.Column + 8), Cells(Target.Row, Target.Column + 8))
        rng2.Activate
        Do While (IsEmpty(rng2.Value))
            MsgBox ("Veuillez renseigner cette cellule")
            rng2.Value = InputBox("oui ou non ?")
        Loop
    End If
End If
If Target.Column = 16 Then
    If Target.Value = "" Then
        Set rng2 = Range(Cells(Target.Row, Target.Column + 1), Cells(Target.Row, Target.Column + 1))
        rng2.Activate
        Do While (IsEmpty(rng2.Value))
            MsgBox ("Veuillez renseigner cette cellule")
            rng2.Value = InputBox("oui ou non ?")
        Loop
    End If
End if
End Sub

Mais il y a surement plus simple en fonction de ce que tu veux faire
Un fichier serait le bienvenu

@Phil69970
 
Dernière édition:

JM27

XLDnaute Accro
bonjour

Peut etre comme cela : pas testé


VB:
Public Sub Worksheet_change(ByVal Target As Range)
Dim rng2 As Range
If Target.Column = 8 Then
    If Target.Value = "oui" Then
        Set rng2 = Range(Cells(Target.Row, Target.Column + 8), Cells(Target.Row, Target.Column + 8))
        rng2.Activate
        Do While (IsEmpty(rng2.Value))
            MsgBox ("Veuillez renseigner cette cellule")
            rng2.Value = InputBox("oui ou non ?")
        Loop
        End If
 ElseIf Target.Column = 16 Then
    If Target.Value = "" Then
    Set rng2 = Range(Cells(Target.Row, Target.Column + 1), Cells(Target.Row, Target.Column + 1))
    rng2.Activate
        Do While (IsEmpty(rng2.Value))
            MsgBox ("Veuillez renseigner cette cellule")
            rng2.Value = InputBox("oui ou non ?")
        Loop
    End If
        
End If
End Sub
 

Lazz

XLDnaute Nouveau
Re

Que veux tu faire exactement avec ton fichier ?

@Phil69970
J'aimerai que quand je rempli une cellule A par exemple alors je suis obligé de remplir la cellule C (Premier programme qui fonctionne très bien) mais du coup je voulais rajouter autre chose (bien sure c'est pas si simple)
Je voulais que quand C est renseigné alors je suis obligé de renseigné D.
c'est pour cela que j'ai dupliquer le même programme avec des numéros de colonne différent
 

Lazz

XLDnaute Nouveau
bonjour

Peut etre comme cela : pas testé


VB:
Public Sub Worksheet_change(ByVal Target As Range)
Dim rng2 As Range
If Target.Column = 8 Then
    If Target.Value = "oui" Then
        Set rng2 = Range(Cells(Target.Row, Target.Column + 8), Cells(Target.Row, Target.Column + 8))
        rng2.Activate
        Do While (IsEmpty(rng2.Value))
            MsgBox ("Veuillez renseigner cette cellule")
            rng2.Value = InputBox("oui ou non ?")
        Loop
        End If
 [COLOR=rgb(26, 188, 156)]ElseIf Target.Column = 16 Then
    If Target.Value = "" Then[/COLOR]
    Set rng2 = Range(Cells(Target.Row, Target.Column + 1), Cells(Target.Row, Target.Column + 1))
    rng2.Activate
        Do While (IsEmpty(rng2.Value))
            MsgBox ("Veuillez renseigner cette cellule")
            rng2.Value = InputBox("oui ou non ?")
        Loop
    End If
       
End If
End Sub
Bonjour, OK ça fonctionne mais que quand la colonne 16 est vide
je pensais que
If Target.Value = "" Then voulais dire "quand la case est rempli alors ..."
mais apparemment non
 

Discussions similaires