Selection de valeur par colonne
Bonjour,
Avant tout, je remercie tous ceux qui m'ont répondu suite à ma demande du 9 janvier 2011 mais je n'ai pu répondre avant pour problème de santé.
Je remercie dubois et dan pour leur réponse.
Comme ils ont eu la gentillesse de me proposer de mettre un fichier en ligne, c'est ce que je fais aujourd 'hui et j'espère que ça m'aidera à voir les formules, les analyser pour les reproduire.
Le tableau joint à été réduit au minimum et les identités chenger pour être en parfaite conformité avec la législation.
En mettant ce tableau simplifié j'espère reproduire les formules sur le vrai plan de gestion de mon entreprise où les données sont plus complexes et multipliées
Aussi voici le sujet:
la feuille N°1 du classeur permet de rentrer des données relatives à des identités, des catégories de personnels et des lieux sur lesquels ils travaillent
Sur la feuille 2, je souhaiterais la protéger et qu'elle soit saisie automatiquement à l'aide des formules qui prennent ce qui est rentré sur la feuille 1. La feuille 1 comprend une liste et la feuille reconnait les personnels par site et les répartis automatiquement.
Je sais qu'il existe des formules comme recherchev ou NBVAL NB.SI mais personne n'arrive à concrétiser.
c'est pourquoi je de demande de l'aide
Je remercie tous ceux qui voudront bien m'aider.
C'est avec plaisir que je m'adresse à vous sur ce forum
Cordialement
GILOU27
Bonjoir
Avec des formules je ne sais pas faire, je te propose avec une macro
A toi de voir
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour à tous,
Une autre en VBA
à noter que tu aurais pu filtrer les sites ou autres, directement sur la Feuil1
Sub MiseAjour() 'Feuille Sites
'Macros par Claude Dubois pour "GILOU27" Excel-Pratique le 01/02/11
Dim Lg%, cL%, i%
Application.ScreenUpdating = False
Sheets("Noms").Activate
Lg = Range("a65536").End(xlUp).Row
Sheets("Sites").Range("a4:L1000").ClearContents
For i = 3 To Lg
Select Case Cells(i, "d")
Case Is = "MONTAUDRAN": cL = 4
Case Is = "NIMES": cL = 10
Case Is = "PESSAC": cL = 7
Case Is = "TOULOUSE": cL = 1
Case Else: GoTo Suite
End Select
With Sheets("Sites")
Lg = .Cells(65000, cL).End(xlUp)(2).Row
.Cells(Lg, cL) = Cells(i, "c") 'qualité
.Cells(Lg, cL + 1) = Cells(i, "b") 'prénom
.Cells(Lg, cL + 2) = Cells(i, "a") 'nom
End With
Suite:
Next i
Sheets("Sites").Activate
Sheets("Sites").Range("a:L").Columns.AutoFit
End SubAmicalement
Claude
Bonjour à tous,
Aussi bien DUBOIS, NAD, DAN et BANZAI 64 m'ont donné une solution à mon problème.
Des deux côtés je vais analyser soit les formules soit la macro pour mieux comprendre et reproduire sur mon plan de gestion.
Vous avez peut être raison, j'ai cherché compliqué alors que l'on peut faire simple!
Toujours est il que je ne vous remercierai jamais assez pour le temps que vous avez pu y passer et pour m'avoir rendu service.
Je ne suis pas un habitué des forums et si je dois apporter quelque chose une évaluation ou autre, il faut me le faire savoir car pour ce qui me concerne je n''ai pas étudié l'informatique à l'école, je m'y suis mis tard. Je sais faire des macros simples des formules simples et c'est tout. Je suis plus à l'aise avec word.
Encore une fois merci et recevez de ma part toute ma sympathie et toute la considération que j'ai pour des personnes aussi qualifiées que vous.
J'ai eu plaisir à converser et échanger des mails avec vous.
GILOU27
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonsoir,
Je ne réponds pas en MP
Entretemps, j'ai acquis un 5ème site à COLOMIERS.
J'ai donc réussi à modifier la macro, le personnel se dispache correctement sur les 5 colonnes mais j'ai un problème
sur le nouveau site chaque fois que je clique sur mise à jour site la macro redouble les données dans le nouveau site.
C'est sans doute parce-que tu n'efface pas le nouveau site, sur cette ligne
Sheets("Sites").Range("a4:o1000").ClearContentscolonne "o" au lieu de "L"
Voici le code complet avec "COLOMIERS"
Sub MiseAjour() 'Feuille Sites
'Macros par Claude Dubois pour "GILOU27" Excel-Pratique le 01/02/11
'ajouté "COLOMIERS" le 27/02/11
Dim Lg%, cL%, i%
Application.ScreenUpdating = False
Sheets("Noms").Activate
Lg = Range("a65536").End(xlUp).Row
Sheets("Sites").Range("a4:o1000").ClearContents 'colonne "o" au lieu de "L"
For i = 3 To Lg
'la variable "cL" est le N° de colonne de la feuille "Sites"
Select Case Cells(i, "d")
Case Is = "TOULOUSE": cL = 1
Case Is = "MONTAUDRAN": cL = 4
Case Is = "PESSAC": cL = 7
Case Is = "NIMES": cL = 10
Case Is = "COLOMIERS": cL = 13
Case Else: GoTo Suite
End Select
With Sheets("Sites")
Lg = .Cells(65000, cL).End(xlUp)(2).Row
.Cells(Lg, cL) = Cells(i, "c") 'qualité
.Cells(Lg, cL + 1) = Cells(i, "b") 'prénom
.Cells(Lg, cL + 2) = Cells(i, "a") 'nom
End With
Suite:
Next i
Sheets("Sites").Activate
Sheets("Sites").Range("a:o").Columns.AutoFit
End SubNote bien que la variable "cL" est le N° de colonne de la feuille "Sites"
Tu sais maintenant comment adapter la macro.
Amicalement
Claude