Pour une base de données je souhaiterais empêcher toute saisie tant que le champ nom (colonne A) n'a
pas été saisi, et ce, quelle que soit la manière dont on remplit les infos (directement dans la
feuille ou par données/formulaire).
J'ai essayé dans données/validation sur la colonne B :
=NON(ESTVIDE(NOM)) mais ça ne fonctionne pas :-(( ... NOM est pourtant dynamique.
On ne peut entrer un prénom que si le nom a été saisi en B2 ²<>""
Cordialement JB
Gros Minet
Re,
Merci JB, mais ce n'est pas ce que je veux. J'ai une base de données, autrement dit, au fur et à mesure de la saisie de ma BD je souhaite, soit rendre la saisie obligatoire dans toute ma colonne A (noms), soit refuser la saisie du champ suivant (colonne B) si le nom n'est pas saisi. Tout ça dynamiquement. Si je sélectionne une zone déterminée ça marche, mais si je dépasse cette zone il accepte que le nom ne soit pas saisi. Comment faire pour que la zone de validation évolue avec la BD ? Je ne vais pas sélectionner jusqu'à B65000 !! J'ai bien des noms dynamiques mais il n'en tient pas compte.
Encore merci beaucoup de m'aider.
Cordialement.
Gros Minet.
"JB" a écrit dans le message de news:
Bonjour,
http://cjoint.com/?fzqUinIljJ
On ne peut entrer un prénom que si le nom a été saisi en B2 ²<>""
Cordialement JB
Re,
Merci JB, mais ce n'est pas ce que je veux. J'ai une base de données, autrement dit, au fur et à
mesure de la saisie de ma BD je souhaite, soit rendre la saisie obligatoire dans toute ma colonne A
(noms), soit refuser la saisie du champ suivant (colonne B) si le nom n'est pas saisi. Tout ça
dynamiquement.
Si je sélectionne une zone déterminée ça marche, mais si je dépasse cette zone il accepte que le nom
ne soit pas saisi. Comment faire pour que la zone de validation évolue avec la BD ? Je ne vais pas
sélectionner jusqu'à B65000 !! J'ai bien des noms dynamiques mais il n'en tient pas compte.
Encore merci beaucoup de m'aider.
Cordialement.
Gros Minet.
"JB" <boisgontier@hotmail.com> a écrit dans le message de news:
1148568397.856751.62920@y43g2000cwc.googlegroups.com...
Bonjour,
http://cjoint.com/?fzqUinIljJ
On ne peut entrer un prénom que si le nom a été saisi en B2
²<>""
Merci JB, mais ce n'est pas ce que je veux. J'ai une base de données, autrement dit, au fur et à mesure de la saisie de ma BD je souhaite, soit rendre la saisie obligatoire dans toute ma colonne A (noms), soit refuser la saisie du champ suivant (colonne B) si le nom n'est pas saisi. Tout ça dynamiquement. Si je sélectionne une zone déterminée ça marche, mais si je dépasse cette zone il accepte que le nom ne soit pas saisi. Comment faire pour que la zone de validation évolue avec la BD ? Je ne vais pas sélectionner jusqu'à B65000 !! J'ai bien des noms dynamiques mais il n'en tient pas compte.
Encore merci beaucoup de m'aider.
Cordialement.
Gros Minet.
"JB" a écrit dans le message de news:
Bonjour,
http://cjoint.com/?fzqUinIljJ
On ne peut entrer un prénom que si le nom a été saisi en B2 ²<>""
Cordialement JB
Fredo P
Pour une protection de la Colonne A:A 1) dans ThisWorkbook Private Sub Workbook_Open() If [feuil1!A1] = "" Then Feuil1.ScrollArea = "A1:H1" End Sub
2) dans la feuille "Feuil1" Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) If [feuil1!A1] = "" Then Feuil1.ScrollArea = "A1:H1" Else Feuil1.ScrollArea = "a1:A65536" End If End Sub
Pour une protection de la Colonne A:A
1) dans ThisWorkbook
Private Sub Workbook_Open()
If [feuil1!A1] = "" Then
Feuil1.ScrollArea = "A1:H1"
End Sub
2) dans la feuille "Feuil1"
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If [feuil1!A1] = "" Then
Feuil1.ScrollArea = "A1:H1"
Else
Feuil1.ScrollArea = "a1:A65536"
End If
End Sub
Pour une protection de la Colonne A:A 1) dans ThisWorkbook Private Sub Workbook_Open() If [feuil1!A1] = "" Then Feuil1.ScrollArea = "A1:H1" End Sub
2) dans la feuille "Feuil1" Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) If [feuil1!A1] = "" Then Feuil1.ScrollArea = "A1:H1" Else Feuil1.ScrollArea = "a1:A65536" End If End Sub
Gros Minet
Bonsoir Fredo !
Pardon pour le retard, j'ai du m'absenter... je vais étudier ta proposition demain et je reviens te dire... Sachant que je ne connais pas les macros et que la personne que j'essaie de dépanner ne maîtrise presque pas Excel :-(. Je voulais donc aller au plus simple avec Données / Validation mais visiblement il n'est pas possible d'indiquer une zone de validation dynamique comme on peut le faire pour un nom avec Þcaler(). par exemple :
=toto<>"" en ayant définit toto dynamiquement comme ceci : totoÞCALER(Feuil2!$A$10;0;0;NBVAL(Feuil2!$A:$A)-1)
La zone de validation serait alors toto lui-même...
Je ne sais pas si mes explications sont claires :-s
Je me repencherai sur tout ça demain.
Merci beaucoup encore.
Cordialement.
Gros Minet.
"Fredo P" a écrit dans le message de news:
Pour une protection de la Colonne A:A 1) dans ThisWorkbook Private Sub Workbook_Open() If [feuil1!A1] = "" Then Feuil1.ScrollArea = "A1:H1" End Sub
2) dans la feuille "Feuil1" Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) If [feuil1!A1] = "" Then Feuil1.ScrollArea = "A1:H1" Else Feuil1.ScrollArea = "a1:A65536" End If End Sub
Bonsoir Fredo !
Pardon pour le retard, j'ai du m'absenter... je vais étudier ta proposition demain et je reviens te
dire...
Sachant que je ne connais pas les macros et que la personne que j'essaie de dépanner ne maîtrise
presque pas Excel :-(.
Je voulais donc aller au plus simple avec Données / Validation mais visiblement il n'est pas
possible d'indiquer une zone de validation dynamique comme on peut le faire pour un nom avec
Þcaler(). par exemple :
=toto<>""
en ayant définit toto dynamiquement comme ceci :
totoÞCALER(Feuil2!$A$10;0;0;NBVAL(Feuil2!$A:$A)-1)
La zone de validation serait alors toto lui-même...
Je ne sais pas si mes explications sont claires :-s
Je me repencherai sur tout ça demain.
Merci beaucoup encore.
Cordialement.
Gros Minet.
"Fredo P" <frdpst@9online.fr> a écrit dans le message de news:
udaCfGBgGHA.4172@TK2MSFTNGP04.phx.gbl...
Pour une protection de la Colonne A:A
1) dans ThisWorkbook
Private Sub Workbook_Open()
If [feuil1!A1] = "" Then
Feuil1.ScrollArea = "A1:H1"
End Sub
2) dans la feuille "Feuil1"
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If [feuil1!A1] = "" Then
Feuil1.ScrollArea = "A1:H1"
Else
Feuil1.ScrollArea = "a1:A65536"
End If
End Sub
Pardon pour le retard, j'ai du m'absenter... je vais étudier ta proposition demain et je reviens te dire... Sachant que je ne connais pas les macros et que la personne que j'essaie de dépanner ne maîtrise presque pas Excel :-(. Je voulais donc aller au plus simple avec Données / Validation mais visiblement il n'est pas possible d'indiquer une zone de validation dynamique comme on peut le faire pour un nom avec Þcaler(). par exemple :
=toto<>"" en ayant définit toto dynamiquement comme ceci : totoÞCALER(Feuil2!$A$10;0;0;NBVAL(Feuil2!$A:$A)-1)
La zone de validation serait alors toto lui-même...
Je ne sais pas si mes explications sont claires :-s
Je me repencherai sur tout ça demain.
Merci beaucoup encore.
Cordialement.
Gros Minet.
"Fredo P" a écrit dans le message de news:
Pour une protection de la Colonne A:A 1) dans ThisWorkbook Private Sub Workbook_Open() If [feuil1!A1] = "" Then Feuil1.ScrollArea = "A1:H1" End Sub
2) dans la feuille "Feuil1" Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) If [feuil1!A1] = "" Then Feuil1.ScrollArea = "A1:H1" Else Feuil1.ScrollArea = "a1:A65536" End If End Sub
JB
Les cellules sont déprotégées au fur et à mesure de la saisie en colonne A:
http://cjoint.com/?fzwexPOMr8
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target.Count = 1 Then Application.EnableEvents = False ActiveSheet.Unprotect ' Password:="moi" Target.Resize(, 3).Locked = False Target.Resize(, 3).Interior.ColorIndex = 37 Range("A65000").End(xlUp).Offset(1, 0).Select ActiveCell.Locked = False ActiveCell.Interior.ColorIndex = 37 ActiveSheet.Protect ' Password:="moi" Application.EnableEvents = True End If End Sub
Les cellules sont déprotégées au fur et à mesure de la saisie en
colonne A:
http://cjoint.com/?fzwexPOMr8
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
Application.EnableEvents = False
ActiveSheet.Unprotect ' Password:="moi"
Target.Resize(, 3).Locked = False
Target.Resize(, 3).Interior.ColorIndex = 37
Range("A65000").End(xlUp).Offset(1, 0).Select
ActiveCell.Locked = False
ActiveCell.Interior.ColorIndex = 37
ActiveSheet.Protect ' Password:="moi"
Application.EnableEvents = True
End If
End Sub
Les cellules sont déprotégées au fur et à mesure de la saisie en colonne A:
http://cjoint.com/?fzwexPOMr8
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target.Count = 1 Then Application.EnableEvents = False ActiveSheet.Unprotect ' Password:="moi" Target.Resize(, 3).Locked = False Target.Resize(, 3).Interior.ColorIndex = 37 Range("A65000").End(xlUp).Offset(1, 0).Select ActiveCell.Locked = False ActiveCell.Interior.ColorIndex = 37 ActiveSheet.Protect ' Password:="moi" Application.EnableEvents = True End If End Sub
JB
Version avec saisie obligatoire toute la ligne:
http://cjoint.com/?fzwJ4OZ8yO
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False ActiveSheet.Unprotect ' Password:="moi" If Target.Column = 1 And Target.Count = 1 Then Target.Resize(, 3).Locked = False Target.Resize(, 3).Interior.ColorIndex = 37 Target.Offset(0, 1).Select témoin = True End If If Target.Column >= 2 And Target.Column <= 3 And _ Application.CountA(Cells(Target.Row, 1).Resize(, 3)) = 3 Then Range("A65000").End(xlUp).Offset(1, 0).Select ActiveCell.Locked = False ActiveCell.Interior.ColorIndex = 37 End If ActiveSheet.Protect ' Password:="moi" Application.EnableEvents = True End Sub
JB
Version avec saisie obligatoire toute la ligne:
http://cjoint.com/?fzwJ4OZ8yO
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
ActiveSheet.Unprotect ' Password:="moi"
If Target.Column = 1 And Target.Count = 1 Then
Target.Resize(, 3).Locked = False
Target.Resize(, 3).Interior.ColorIndex = 37
Target.Offset(0, 1).Select
témoin = True
End If
If Target.Column >= 2 And Target.Column <= 3 And _
Application.CountA(Cells(Target.Row, 1).Resize(, 3)) = 3 Then
Range("A65000").End(xlUp).Offset(1, 0).Select
ActiveCell.Locked = False
ActiveCell.Interior.ColorIndex = 37
End If
ActiveSheet.Protect ' Password:="moi"
Application.EnableEvents = True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False ActiveSheet.Unprotect ' Password:="moi" If Target.Column = 1 And Target.Count = 1 Then Target.Resize(, 3).Locked = False Target.Resize(, 3).Interior.ColorIndex = 37 Target.Offset(0, 1).Select témoin = True End If If Target.Column >= 2 And Target.Column <= 3 And _ Application.CountA(Cells(Target.Row, 1).Resize(, 3)) = 3 Then Range("A65000").End(xlUp).Offset(1, 0).Select ActiveCell.Locked = False ActiveCell.Interior.ColorIndex = 37 End If ActiveSheet.Protect ' Password:="moi" Application.EnableEvents = True End Sub
JB
Gros Minet
Salut JB !
Pardon pour cette réponse si tardive, je sais combien il est désagéable de ne pas avoir de retour. J'ai un boulot qui est tombé hier pour lundi, je dois donc bosser dessus tout le week-end :-((( J'ai pour l'instant opté pour une sélection de 2000 lignes sur ma colonne B. La personne pour qui j'ai concocté ça s'en contente pour le moment. C'est idiot... mais ça marche bien... en attendant d'étudier les macros que tu me proposes. Promis, juré je reposterai dès que j'aurai pu mettre les moustaches dedans :-)
Encore mille mercis à toi ainsi qu'à Fredo P.
Cordialement.
Gros Minet.
"JB" a écrit dans le message de news:
Version avec saisie obligatoire toute la ligne:
http://cjoint.com/?fzwJ4OZ8yO
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False ActiveSheet.Unprotect ' Password:="moi" If Target.Column = 1 And Target.Count = 1 Then Target.Resize(, 3).Locked = False Target.Resize(, 3).Interior.ColorIndex = 37 Target.Offset(0, 1).Select témoin = True End If If Target.Column >= 2 And Target.Column <= 3 And _ Application.CountA(Cells(Target.Row, 1).Resize(, 3)) = 3 Then Range("A65000").End(xlUp).Offset(1, 0).Select ActiveCell.Locked = False ActiveCell.Interior.ColorIndex = 37 End If ActiveSheet.Protect ' Password:="moi" Application.EnableEvents = True End Sub
JB
Salut JB !
Pardon pour cette réponse si tardive, je sais combien il est désagéable de ne pas avoir de retour.
J'ai un boulot qui est tombé hier pour lundi, je dois donc bosser dessus tout le week-end :-(((
J'ai pour l'instant opté pour une sélection de 2000 lignes sur ma colonne B. La personne pour qui
j'ai concocté ça s'en contente pour le moment. C'est idiot... mais ça marche bien... en attendant
d'étudier les macros que tu me proposes. Promis, juré je reposterai dès que j'aurai pu mettre les
moustaches dedans :-)
Encore mille mercis à toi ainsi qu'à Fredo P.
Cordialement.
Gros Minet.
"JB" <boisgontier@hotmail.com> a écrit dans le message de news:
1148589417.446557.211200@i39g2000cwa.googlegroups.com...
Version avec saisie obligatoire toute la ligne:
http://cjoint.com/?fzwJ4OZ8yO
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
ActiveSheet.Unprotect ' Password:="moi"
If Target.Column = 1 And Target.Count = 1 Then
Target.Resize(, 3).Locked = False
Target.Resize(, 3).Interior.ColorIndex = 37
Target.Offset(0, 1).Select
témoin = True
End If
If Target.Column >= 2 And Target.Column <= 3 And _
Application.CountA(Cells(Target.Row, 1).Resize(, 3)) = 3 Then
Range("A65000").End(xlUp).Offset(1, 0).Select
ActiveCell.Locked = False
ActiveCell.Interior.ColorIndex = 37
End If
ActiveSheet.Protect ' Password:="moi"
Application.EnableEvents = True
End Sub
Pardon pour cette réponse si tardive, je sais combien il est désagéable de ne pas avoir de retour. J'ai un boulot qui est tombé hier pour lundi, je dois donc bosser dessus tout le week-end :-((( J'ai pour l'instant opté pour une sélection de 2000 lignes sur ma colonne B. La personne pour qui j'ai concocté ça s'en contente pour le moment. C'est idiot... mais ça marche bien... en attendant d'étudier les macros que tu me proposes. Promis, juré je reposterai dès que j'aurai pu mettre les moustaches dedans :-)
Encore mille mercis à toi ainsi qu'à Fredo P.
Cordialement.
Gros Minet.
"JB" a écrit dans le message de news:
Version avec saisie obligatoire toute la ligne:
http://cjoint.com/?fzwJ4OZ8yO
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False ActiveSheet.Unprotect ' Password:="moi" If Target.Column = 1 And Target.Count = 1 Then Target.Resize(, 3).Locked = False Target.Resize(, 3).Interior.ColorIndex = 37 Target.Offset(0, 1).Select témoin = True End If If Target.Column >= 2 And Target.Column <= 3 And _ Application.CountA(Cells(Target.Row, 1).Resize(, 3)) = 3 Then Range("A65000").End(xlUp).Offset(1, 0).Select ActiveCell.Locked = False ActiveCell.Interior.ColorIndex = 37 End If ActiveSheet.Protect ' Password:="moi" Application.EnableEvents = True End Sub
JB
JB
Vrsion avec ScrollAréa:
http://cjoint.com/?fCrTRTruKx
Saisie guidée avec Scroll Aréa:
Sub auto_open() champ = "A2:A" & [A65000].End(xlUp).Row + 1 Range(champ).Interior.ColorIndex = 36 Sheets(1).ScrollArea = champ End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target.Count = 1 Then champ = "A2:C" & [A65000].End(xlUp).Row Range(champ).Interior.ColorIndex = 36 Sheets(1).ScrollArea = champ Target.Offset(0, 1).Select End If
If Target.Column > 1 Then Target.Offset(0, 1).Select If Target.Column > 1 And Application.CountA(Cells(Target.Row, 1).Resize(, 3)) = 3 Then champ = "A2:A" & [A65000].End(xlUp).Row + 1 Range(champ).Interior.ColorIndex = 36 Sheets(1).ScrollArea = champ [A65000].End(xlUp).Offset(1, 0).Select End If End Sub
Cordialement JB
Vrsion avec ScrollAréa:
http://cjoint.com/?fCrTRTruKx
Saisie guidée avec Scroll Aréa:
Sub auto_open()
champ = "A2:A" & [A65000].End(xlUp).Row + 1
Range(champ).Interior.ColorIndex = 36
Sheets(1).ScrollArea = champ
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
champ = "A2:C" & [A65000].End(xlUp).Row
Range(champ).Interior.ColorIndex = 36
Sheets(1).ScrollArea = champ
Target.Offset(0, 1).Select
End If
If Target.Column > 1 Then Target.Offset(0, 1).Select
If Target.Column > 1 And Application.CountA(Cells(Target.Row,
1).Resize(, 3)) = 3 Then
champ = "A2:A" & [A65000].End(xlUp).Row + 1
Range(champ).Interior.ColorIndex = 36
Sheets(1).ScrollArea = champ
[A65000].End(xlUp).Offset(1, 0).Select
End If
End Sub
Sub auto_open() champ = "A2:A" & [A65000].End(xlUp).Row + 1 Range(champ).Interior.ColorIndex = 36 Sheets(1).ScrollArea = champ End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target.Count = 1 Then champ = "A2:C" & [A65000].End(xlUp).Row Range(champ).Interior.ColorIndex = 36 Sheets(1).ScrollArea = champ Target.Offset(0, 1).Select End If
If Target.Column > 1 Then Target.Offset(0, 1).Select If Target.Column > 1 And Application.CountA(Cells(Target.Row, 1).Resize(, 3)) = 3 Then champ = "A2:A" & [A65000].End(xlUp).Row + 1 Range(champ).Interior.ColorIndex = 36 Sheets(1).ScrollArea = champ [A65000].End(xlUp).Offset(1, 0).Select End If End Sub