Zone de saisie pour plusieur tableaux

Ilino

XLDnaute Barbatruc
Forum Bonjour
Je vous sollicite a m’aider pour résoudre mon souci suivant :
Dans la feuille 1 j’ai 10 tableaux de 100 lignes (chacun) et dans chaque tableau (a l’entête) j’ai une ligne de saisie (avec le code VBA)
Dans le 1 tableau de ligne 5 au 105
Dans le 2 tableau de ligne 107 au 207
Dans le 2 tableau de ligne 209 au 309
Etc…..
Je souhaiterai généralisé le code du tableau 1 dans l’ensemble des tableaux
Chaque zone de saisie pour son propre tableau.
A+
 

Pièces jointes

  • ilino p.xlsm
    48.2 KB · Affichages: 36
  • ilino p.xlsm
    48.2 KB · Affichages: 36
  • ilino p.xlsm
    48.2 KB · Affichages: 37

job75

XLDnaute Barbatruc
Re : Zone de saisie pour plusieur tableaux

Bonjour Ilino,

Oui, la coloration des cellules est un bon critère pour distinguer les en-têtes :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then 'interdit de modifier une plage (copier-coller)
  With Application: .EnableEvents = False: .Undo: .EnableEvents = True: End With
ElseIf Target.Column > 6 And Target.Interior.ColorIndex <> xlNone Then
  If Target = "Saisir ici !" Then Exit Sub
  If Application.CountA(Target.Resize(102)) = 102 Then
    MsgBox "La colonne est pleine !", 48
  ElseIf Application.CountIf(Target.Resize(102), Target) > 1 Then
    MsgBox "La donnée '" & Target & "' existe déjà !", 48
  Else
    Target.End(xlDown)(2) = Target
  End If
  Target = "Saisir ici !": Target.Select
End If
End Sub
Après la colonne F ne pas colorer d'autres cellules, ou alors préciser le code couleur dans le test.

A+
 

job75

XLDnaute Barbatruc
Re : Zone de saisie pour plusieur tableaux

Re,

[Edit] Avec End(xlDown) ça n'allait pas, il vaut mieux rechercher la 1ère cellule vide avec Find :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then 'interdit de modifier une plage (copier-coller)
  With Application: .EnableEvents = False: .Undo: .EnableEvents = True: End With
ElseIf Target.Column > 6 And Target.Interior.ColorIndex <> xlNone Then
  If Target = "Saisir ici !" Then Exit Sub
  If Application.CountA(Target(2).Resize(101)) = 101 Then
    MsgBox "La colonne est pleine !", 48
  ElseIf Application.CountIf(Target(2).Resize(101), Target) Then
    MsgBox "La donnée '" & Target & "' existe déjà !", 48
  Else
    Target.Resize(102).Find("", , xlValues) = Target
  End If
  Target = "Saisir ici !": Target.Select
End If
End Sub
A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Zone de saisie pour plusieur tableaux

Re,

Cela dépend de ce que l'on veut faire, mais on peut aussi utiliser End(xlUp) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then 'interdit de modifier une plage (copier-coller)
  With Application: .EnableEvents = False: .Undo: .EnableEvents = True: End With
ElseIf Target.Column > 6 And Target.Interior.ColorIndex <> xlNone Then
  If Target = "Saisir ici !" Then Exit Sub
  If Target(102) <> "" Then
    MsgBox "La dernière cellule de la colonne est occupée !", 48
  ElseIf Application.CountIf(Target.Resize(102), Target) > 1 Then
    MsgBox "La donnée '" & Target & "' existe déjà !", 48
  Else
    If Target <> "" Then Target(102).End(xlUp)(2) = Target
  End If
  Target = "Saisir ici !": Target.Select
End If
End Sub
Edit : ajouté If Target <> "" Then

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Zone de saisie pour plusieur tableaux

Bonjour Ilino,

Au post #3 c'est la 1ère cellule vide qui suit l'en-tête qui est renseignée.

Au post #4 c'est la cellule située sous la dernière cellule non vide.

Pour le reste il suffit de lire le code pour comprendre ce qu'il fait, mais si une ligne te pose problème dis-nous laquelle.

A+
 

Ilino

XLDnaute Barbatruc
Re : Zone de saisie pour plusieur tableaux

Bonjour Ilino,

Oui, la coloration des cellules est un bon critère pour distinguer les en-têtes :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

ElseIf Target.Column > 6 And Target.Interior.ColorIndex <> xlNone Then
  
End Sub
Après la colonne F ne pas colorer d'autres cellules, ou alors préciser le code couleur dans le test.

A+

Merci pour la réponse et les details , mon souci est a ce niveau " tu as parlé des colorations des cellules ?????"
grazie
 

Ilino

XLDnaute Barbatruc
Re : Zone de saisie pour plusieur tableaux

Re Job
Code:
ElseIf Target.Column > 6 And Target.Interior.ColorIndex <> xlNone Then
  If Target = "Saisir ici !" Then Exit Sub
COMMENT FAIRE POUR L'APPLIQUER QUE POUR DES COLONNES SEPAREES ( exemple Colonne G, H , L et M)
A+
 

job75

XLDnaute Barbatruc
Re : Zone de saisie pour plusieur tableaux

Re,

Sur ton fichier du post #1 les cellules des en-têtes sont colorées :

- sur Excel 2003 elles sont en gris => Target.Interior.ColorIndex = 15

- sur Excel 2010 elles sont en blanc => Target.Interior.ColorIndex = 2

- sur Excel 2007 je ne sais pas, à tester.

Tu peux donc (sur Excel 2010) remplacer le code :

Code:
ElseIf Target.Column > 6 And Target.Interior.ColorIndex <> xlNone Then
par :

Code:
ElseIf Target.Column > 6 And Target.Interior.ColorIndex = 2 Then
Les cellules sous les en-têtes ne devront pas être colorées en blanc.

A+
 

Ilino

XLDnaute Barbatruc
Re : Zone de saisie pour plusieur tableaux

Re job
Merci pour l'eclairecessement ...
désolé pour le poste #8 j'ai mal lancé mon souci, je souhaite affaicher la zone de saisie dans des colonnes séparées ( exemple Colonne G, H , L et M) au lieu d'utiliser le code suivant : ElseIf Target.Column > 6 ......
A+
 

Discussions similaires

Réponses
4
Affichages
221

Statistiques des forums

Discussions
312 413
Messages
2 088 201
Membres
103 763
dernier inscrit
p.michaux