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

Microsoft 365 Ecrire dans une cellule suivant une autre en VBA

Francky79

XLDnaute Occasionnel
Bonjour le forum,

Je sollicite votre aide pour la modification d’un code VBA

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
'si la colonne de la cellule modifiée est différente de 11 (=> colonne K), sort de la procédure
 If Target.Column <> 38 Then Exit Sub
'si la cellule en colonne K est non vide, envoie "ENLEVÉ" dans la colonne U
If Target.Value <> "" Then
     Target.Offset(0, -1).Value = "x"
Else
     Target.Offset(0, -1).Value = ""
End If
End Sub

Dans ce code quand je rentre une valeur en AL6, dans AK6 la valeur passe à x en automatique.
Si je supprime la valeur en AL6 la cellule AK6 redevient vide
Je voudrais faire pareil en AM6, si valeur dans AM6 AL6 passe à x, si je supprime la valeur en AM6, AL 6 revient vide.
Et je voudrais limiter la zone de AK6 :AM500
Par contre dans (Worksheet_Change) il y a déjà un code, je voudrais mettre celui-ci à suivre.

Merci pour votre aide.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Francky,
Pouvez vous fournir un fichier test avec la macro Worksheet_Change déjà existante pour modification ?
Autre question, pas tout compris à :
Je voudrais faire pareil en AM6, si valeur dans AM6 AL6 passe à x, si je supprime la valeur en AM6, AL 6 revient vide.
Si je supprime la valeur en AM6, AL 6 revient vide. Donc AL6 étant vide, alors AK6 redevient vide. C'est ça ?
 

Lolote83

XLDnaute Barbatruc
Bonjour,
Je crois qu'il y a un petit problème.
Tu dis : valeur en AL6, dans AK6 la valeur passe à x
Donc si on saisie une donnée en AL6, AK6 passe à "x" et donc inversement si AL6 est supprimée, AK6 passe à vide.
Par contre, si AM6 = quelque chose, tu demandes à ce qu'AL6 passe à "x" donc dans ce cas, tu supprimes ce qui avait été saisi au préalable en AL6. N'y a -t-il pas erreur sur les cellules ?
@+ Lolote83
Edit : Bonjour @patricktoulon , @sylvanu
 

Francky79

XLDnaute Occasionnel
Merci pour votre aide,

Pour les cellules AL-- AK-- et AM-- c'est bien ça que je voudrais.
Le code déjà présent dans Sub Worksheet_Change

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i&
Set Target = Intersect(Target, [V:V], UsedRange)
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
On Error Resume Next
With Feuil3 'CodeName à adapter
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    For Each Target In Target 'si entrées/effacements multiples
        If Target.Row > 1 Then
            If LCase(Target) = "t" Then
                i = 0
                i = Application.Match(Target(1, 0), .Columns(1), 0)
                If i = 0 Then i = .Cells(.Rows.Count, 1).End(xlUp).Row + 1: .Cells(i, 1) = Target(1, -20)
                'Hyperlinks.Add Target(1, 2), "", .Name & "!" & .Cells(i, 1).Address(0, 0), TextToDisplay:="OA"
            ElseIf Target = "" Then
                Target(1, 2).Clear 'RAZ
                .Rows(Application.Match(Target(1, -19), .Columns(1), 0)).Delete
            End If
        End If
    Next
End With
[V:V].HorizontalAlignment = xlCenter 'centrage
    Application.EnableEvents = True 'réactive les évènements

End Sub
 

Discussions similaires

Réponses
7
Affichages
191
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…