Des ranges intelligentes qui se font pas avoir!

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

GS82

XLDnaute Occasionnel
Salut les Xldiens et les Xldiennes
mon problème est ceci
j'ai 4 colonnes dont les valeurs des cellules sont saisies à partir de liste (menu validation/liste etc...)
j'aimerai bien que une fois j'ai choisi une valeur dans une cellule, on ne peut pas la rechoisir sur une cellule de la même ligne
Encore, si dans une ligne quelconque, je laisse une cellule vide, et je veux saisir une valeur dans une cellule à sa droite, celle ci passe automatiquement à la cellule vide que j'ai laissé à gauche
🙄
je joint un exeple qui pourra mieux presenter ma requete

merci et A+
 

Pièces jointes

Re : Des ranges intelligentes qui se font pas avoir!

et voila le travail, a verifier !!
Private Sub CommandButton2_Click()
Dim k As String

For i = 16 To 46

Range("J" & i).Select
k = Range("J" & i).Value

If Range("I" & i).Value = "" Then
Range("I" & i).Value = k
Range("J" & i).ClearContents
End If
If Range("I" & i).Value = k Or Range("H" & i).Value = k Or Range("G" & i).Value = k Then Range("J" & i).ClearContents


Range("I" & i).Select
k = Range("I" & i).Value

If Range("H" & i).Value = "" Then
Range("H" & i).Value = k
Range("I" & i).ClearContents
End If
If Range("H" & i).Value = k Or Range("G" & i).Value = k Then Range("I" & i).ClearContents


Range("H" & i).Select
k = Range("H" & i).Value

If Range("G" & i).Value = "" Then
Range("G" & i).Value = k
Range("H" & i).ClearContents
End If
If Range("G" & i).Value = k Then Range("H" & i).ClearContents



Next




End Sub
merci mécano41, je vais jeter un coup d'oeuil sur ton fichier et je reviens
a +
 
Re : Des ranges intelligentes qui se font pas avoir!

salut
j'ai essayé de mettre le code en place mais ça fonctionne pas
je sais pas mais j'ai du commetre une faute dans le changement des données
je continue a essayer tt de meme
 
Re : Des ranges intelligentes qui se font pas avoir!

Bonjour Skoobi,

Ton code est beaucoup plus compact que le mien, c'est mieux.

Il faudrait cependant corriger quelques bricoles :

- si l'on a entré par exemple A, D et F dans les premières cellules d'une ligne, on ne peut pas modifier l'une d'elles ; si l'on tape B à la place de A, le A disparaît et le B se met à la place du D.

- si l'on efface le contenu d'une cellule, le décalage ne se fait pas et l'on ne peut plus écrire dedans

- si l'on sélectionne tout le tableau et qu'on l'efface, il y a une erreur.
Comme on n'a pas remis en activité la détection des évènements suite à l'erreur, on ne peut plus rien faire sinon bidouiller dans VBA (ça, c'est pareil dans mon fichier mais comme apparemment aucune erreur ne se déclenche, ça passe !)

Cordialement
 
Re : Des ranges intelligentes qui se font pas avoir!

salut
j'ai essayé de mettre le code en place mais ça fonctionne pas
je sais pas mais j'ai du commetre une faute dans le changement des données
je continue a essayer tt de meme

Explique-nous ce qui ne va pas... (as-tu bien copié les 2 codes feuille ICI et module 1? As-tu bien nommé les cellules et plages nécessaires?)

Cordialement

EDIT : Si j'ai bien compris, tu as plus de 4 colonnes maintenant, il faut donc dans le code remplacer 4 par le nombre de colonnes (3 fois) mais il semble qu'il y ait autre chose, je regarde...

EDIT2 : non, ça va, j'avais oublié d'agrandir la plage nommée!
 
Dernière édition:
Re : Des ranges intelligentes qui se font pas avoir!

salut skoobi, mecano41
donc c'est ca le code

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ColDeb As Long, ColFin As Long, NbOcc As Long, Lig As Long
If Not Intersect(Target, [saisie]) Is Nothing Then
Application.EnableEvents = False
If Target.Value <> "" Then
ColDeb = [saisie].Columns(1).Column
ColFin = [saisie].Columns([saisie].Columns.Count).Column
Lig = Target.Row - Range("saisie")(1).Row + 1
If Application.CountIf(Range(Cells(Target.Row, ColDeb), Cells(Target.Row, ColFin)), Target.Value) = 1 Then
NbOcc = Application.CountA([saisie].Rows(Lig))
Range("saisie")(Lig, NbOcc).Value = Target.Value
If Range("saisie")(Lig, NbOcc).Address <> Target.Address Then Target.ClearContents
Else: Target.ClearContents
End If
End If
Application.EnableEvents = True
End If
End Sub

en fait excusez le fait que chui pas encore assez familier avec la fonction selection change

La feuille sur laquelle je travail est nommeée modèle
le tableau concerné par ces modifications est range("G16:J46")

ou je remplace mes données dans le code?
Je sais c'est peut etre stupide comme question, mais je veux apprendre!!
merci
 
Re : Des ranges intelligentes qui se font pas avoir!

salut mecano41
justement c'est la ou je me planque
j'ai copié le code comme il est
mais je me plante lors de la substitution
y'a plus d'erreur
mais aussi rien ne se passe plus !!
désolé pour mon niveau assez novice:`(
 
Re : Des ranges intelligentes qui se font pas avoir!

Bonjour Skoobi,

Ton code est beaucoup plus compact que le mien, c'est mieux.

Il faudrait cependant corriger quelques bricoles :

- si l'on a entré par exemple A, D et F dans les premières cellules d'une ligne, on ne peut pas modifier l'une d'elles ; si l'on tape B à la place de A, le A disparaît et le B se met à la place du D.

- si l'on efface le contenu d'une cellule, le décalage ne se fait pas et l'on ne peut plus écrire dedans

- si l'on sélectionne tout le tableau et qu'on l'efface, il y a une erreur.
Comme on n'a pas remis en activité la détection des évènements suite à l'erreur, on ne peut plus rien faire sinon bidouiller dans VBA (ça, c'est pareil dans mon fichier mais comme apparemment aucune erreur ne se déclenche, ça passe !)

Cordialement
Re,

le tout est de savoir si GS82 fait uniquement de la saisie ou s'il compte également modifier les cellules déjà renseignées...
Ton code est beaucoup plus compact que le mien, c'est mieux.
Surement parce que je ne tiens pas compte des modifications éventuelles.
 
- 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

M
Réponses
6
Affichages
2 K
Maryloo2005
M
P
  • Question Question
Réponses
5
Affichages
2 K
PierreJeanPierre
P
L
Réponses
2
Affichages
1 K
lowkick
L
G
Réponses
16
Affichages
2 K
G
Retour