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

effacer une cellule en fonction d'une autre en VBA

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

Youme

XLDnaute Nouveau
Bonjour à toutes et à tous,

J'ai un tableau dans lequel j'ai plusieurs colonnes qui contiennent des contenus incompatibles les uns avec les autres.

Ce que je souhaite c'est obtenir un programme VBA qui permet (par exemple) d'effacer le contenu de la cellule B3 si l'on inscrit quelque chose dans la cellule B4 et vice versa.

Par avance merci pour votre aide (j'ai tenté ceci mais en vain:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each cell In Range("G7:G235")
If ActiveCell <> "" Then
ActiveCell.Offset(0, -2) = Null
End If
Next
End Sub
 
Re : effacer une cellule en fonction d'une autre en VBA

Bonjour,
J'ai fait ça, ça fonctionne (par exemple si H8 est remplie alors G8 s'efface).
Mais c'est étrange comme utilisation.

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each cell In Range("G7:G235")
           If Not Cell.Offset(0, 1).Value = "" Then
             Cell.Value = ""
           End If
Next
End Sub
Cordialement
 

Pièces jointes

Re : effacer une cellule en fonction d'une autre en VBA

En fait le but est de créer une sécurité pour éviter que deux contenu incompatible se retrouvent inscrit en même temps. C'est tout ce que j'ai trouvé avec mon peu de connaissance pour y parvenir.

en tout cas merci pour ton aide précieuse ca me suffira peut être.
 
Re : effacer une cellule en fonction d'une autre en VBA

Je me permet de vous re solliciter pour une demande quasi similaire, à ceci près que l'effacement ne se fait que si la cellule adjacente ne contient aucun chiffre.

Exemple A3 est effacé si A2 contient "RAC" ou "X"
A3 n'est pas effacé si A2 contient "H+11" ou "B1A2"
 
Re : effacer une cellule en fonction d'une autre en VBA

Re
Avec vos nouvelles explications, une autre proposition:
Si il y à "Kelkechoz" en colonne F saisie impossible en colonne G:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    For Each Cell In Range("G7:G235")
        If Cell.Offset(0, -1).Value = "Kelkechoz" Then
            Cell.Value = ""
        End If
    Next
End Sub
Cordialement
 

Pièces jointes

Re : effacer une cellule en fonction d'une autre en VBA

Re,
Nous nopus sommes croisés.
Mon dernier Post était pour votre avant dernière précision.
Pour votre nouvelle demande, je ne connait pas la solution pour vérifier la présence de chiffre à l'intérieur d'une suite de caractères (même si je pense que certains membres du forum pourraient le faire). Désolé.
Cordialement
 
Re : effacer une cellule en fonction d'une autre en VBA


Merci c'est déjà beaucoup d'avoir solutionné cette partie de mon problème.
 
Re : effacer une cellule en fonction d'une autre en VBA

Bonsoir Youme,
Sur un code de bqtr trouvé ici
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Val As Long
Dim k As Integer
For Each Cell In Range("G7:G235")
For k = Len(Cell.Offset(0, -1)) To 1 Step -1
    If IsNumeric(Mid(Cell.Offset(0, -1), k, 1)) Then Val = k: Exit For
Next k
If Val = 0 Then
    Cell.Value = ""
End If
Val = 0
Next Cell
End Sub
Saisie impossible en colonne G si la cellule correspondante en colonne H ne contient pas de chiffre
Cordialement
 

Pièces jointes

Dernière édition:
Re : effacer une cellule en fonction d'une autre en VBA

Bonjour Efgé c'est parfaitement l'idée que j'avais en tête tu me sauve la mise !
Serait ce abusé de ma part de te demander comment on peut combiner les deux ?
j'ai essayé mais il n'accepte pas deux fois la commande " FOR EACH...".

Par avance merci
 
Re : effacer une cellule en fonction d'une autre en VBA

Re
comment on peut combiner les deux ?
Les deux quoi ?
Vous voulez dire la réciproque (Saisie impossible en colonne H si la cellule correspondante en colonne G ne contient pas de chiffre
) ?
Je pense que l'on risqie de se retrouver rapidement avec des conflits. Je regarderai demain, mais... ...là ça me parait complexe.
Cordialement
Edit : et puis si il n'y a de chiffres ni en H ni en G, quelles sont les priorités et puis... (pour l'instant je réfléchi, mais je ne voit que des risques. La nuit porte conseil, à demain.
 
Dernière édition:
Re : effacer une cellule en fonction d'une autre en VBA


En fait dans mon tableau j'ai les colonnes E,F et G qui sont soit totalement incompatibles (notamment (E et G) ce qui correspond à ce programme :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each cell In Range("G7:G235")
           If Not Cell.Offset(0, 1).Value = "" Then
             Cell.Value = ""
           End If
Next
End Sub

Soit partiellement compatible entre E et F ce qui correspond à ce programme :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Val As Long
Dim k As Integer
For Each Cell In Range("G7:G235")
For k = Len(Cell.Offset(0, -1)) To 1 Step -1
    If IsNumeric(Mid(Cell.Offset(0, -1), k, 1)) Then Val = k: Exit For
Next k
If Val = 0 Then
    Cell.Value = ""
End If
Val = 0
Next Cell
End Sub

Mais pour que le fonctionnement soit correcte j'aurais besoin que les deux programmes soit compatibles.

Si quelqu'un à la solution je pourrai terminer mon tableau.
 
Re : effacer une cellule en fonction d'une autre en VBA

Bonjour Youme,
Une proposition, si j'ai compris:
Si cellule non vide en E alors saisie impossible en G
Si cellule en F possede au moins un chiffre alors saisie impossible en G
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Val As Long
Dim k As Integer
For Each Cell In Range("G7:G235")
If Not Cell.Offset(0, -2).Value = "" Then
        Cell.Value = ""
End If
For k = Len(Cell.Offset(0, -1)) To 1 Step -1
    If IsNumeric(Mid(Cell.Offset(0, -1), k, 1)) Then Val = k: Exit For
Next k
If Val = 0 Then
    Cell.Value = ""
End If
Val = 0
Next Cell
End Sub
Cordialement
 

Pièces jointes

Re : effacer une cellule en fonction d'une autre en VBA

Merci beaucoup pour le temps que vous m'accordez. c'est presque ca sauf que la saisie devrait être impossible en F si E ne comporte pas de chiffre.
Savez pour quelle raison on ne peut pa sfaire deux boucles du type FOR EACH... ?
 
Re : effacer une cellule en fonction d'une autre en VBA

Re,
Voilà où j'en suis :

Pas de saisie en F si :
E ne contient pas au moins un chiffre ( donc si E est vide pas de saisie non plus...)
Pas de saisie en G si :
F ne contient pas au moins un chiffre OU E n'est pas vide.
Voir fichier joint pour faire vos tests.
Cordialement
 

Pièces jointes

Re : effacer une cellule en fonction d'une autre en VBA


Un grand merci pour la patience et l'efficacité dont vous avez fait preuve.
Ca marche impec !
 
- 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
2
Affichages
154
Réponses
6
Affichages
303
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…