effacer une cellule en fonction d'une autre en VBA

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
 

Efgé

XLDnaute Barbatruc
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

  • efface cel (1).xls
    20.5 KB · Affichages: 412

Youme

XLDnaute Nouveau
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.
 

Youme

XLDnaute Nouveau
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"
 

Efgé

XLDnaute Barbatruc
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

  • efface cel (2).xls
    20.5 KB · Affichages: 227

Efgé

XLDnaute Barbatruc
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
 

Youme

XLDnaute Nouveau
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

Merci c'est déjà beaucoup d'avoir solutionné cette partie de mon problème.
 

Efgé

XLDnaute Barbatruc
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

  • efface cel (3).xls
    30.5 KB · Affichages: 193
  • efface cel (3).xls
    30.5 KB · Affichages: 195
  • efface cel (3).xls
    30.5 KB · Affichages: 199
Dernière édition:

Youme

XLDnaute Nouveau
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
 

Efgé

XLDnaute Barbatruc
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:

Youme

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

Re

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.

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.
 

Efgé

XLDnaute Barbatruc
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

  • efface cel (3).xls
    30 KB · Affichages: 138
  • efface cel (3).xls
    30 KB · Affichages: 146
  • efface cel (3).xls
    30 KB · Affichages: 154

Youme

XLDnaute Nouveau
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... ?
 

Efgé

XLDnaute Barbatruc
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

  • efface cel (4).xls
    33.5 KB · Affichages: 209

Youme

XLDnaute Nouveau
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

Un grand merci pour la patience et l'efficacité dont vous avez fait preuve.
Ca marche impec !
 

Discussions similaires

Statistiques des forums

Discussions
312 223
Messages
2 086 402
Membres
103 200
dernier inscrit
pascalgip