Dans l'onglet saisie serait-il possible d'incrémenter automatiquement la formule qui se situe en "D3" et ceci fur et à mesure que les cellules a3 + b3 + c3 soient renseignés.
En clair actuellement quand je renseigne la colonne A3, puis B3, puis C3 et que je valide je renseigne D3 automatiquement par le biais de la formule qui s'y trouve (formule dont j'ai besoin). Vous allez me dire il suffit de tirer la formule en D pour que ce soit renseigné, oui OK! mais le problème est que si je tire la formule, et que après j'ouvre le menu déroulant qui se trouve dans l'onglet janvier 2015 colonnes C13:C48 beaucoup de trous vides seront apparents, c'est ce que je voudrais éviter, je voudrais voir uniquement les noms/ prénoms/matricule qui ont été notés.
voir avec pièce jointe
http://www.cjoint.com/c/ELljttdIJos
Merci pour votre aide
Salutation
A voir également:
Incrémentation automatique d'une formule dans une colonne
Ok, mais comme mes compétences me font fort défaut en VBA ainsi qu'au niveau formules je serais bien content si vous pouviez m'aider à trouver la solution
fichier modifie, peut etre encore ameliore, notamment par une saisie avec une Userform et une feuille de donnees protegee (gestion plus simple des saisies), mais a voir.
Merci de ton aide, mais dans l'actuel avec ton fichier modifier je ne respecte plus l'écart entre noms/prénoms/matricule. c'est à dire que plus il y a des lettre dans le nom plus l'écart augmente et le problème lorsque je sélectionne un noms dans le menu déroulant il n'est plus centré comme il devrait être à l'origine.
en espérant que je me suis bien exprimé
Re,
code modifie, adaptez les longueurs de chaines et la police de caractere pour ajuster au mieux
Private Sub Worksheet_Change(ByVal Target As Range)
Dim DerLig As Long, Lig As Long
Dim xplage As Range
'parametres longueur chaines
Dim Nom As String * 20, Prenom As String * 12, Mat As String * 12
On Error GoTo fin
DerLig = Range("E" & Rows.Count).End(xlUp).Row
If Target.Count > 1 Then Exit Sub
Lig = Target.Row
If Not Intersect(Target, Range("A2:C" & Lig)) Is Nothing Then
Application.EnableEvents = False
If IsEmpty(Range("A" & Lig)) And IsEmpty(Range("A" & Lig)) Then 'RAZ infos si A et B vides
Range("C" & Lig) = ""
Range("D" & Lig) = ""
End If
If Target.Column = 3 And Target <> Empty Then 'cellule C non vide
If IsEmpty(Range("A" & Lig)) Then
MsgBox "Remplir le nom svp!!!!!!"
Range("A" & Lig).Select
Application.Undo 'raz cellule
GoTo fin
End If
If IsEmpty(Range("B" & Lig)) Then
MsgBox "Remplir le prenom svp!!!!!!"
Range("B" & Lig).Select
Application.Undo
GoTo fin
End If
'remplissage colonne D:
Nom = Range("A" & Lig)
Prenom = Range("B" & Lig)
Mat = Range("C" & Lig)
Range("D" & Lig) = Nom & Prenom & Mat
Range("A2:D" & DerLig).Sort Range("A2"), xlAscending 'tri croissant pour les colonnes A,B,C
ElseIf Target.Column = 3 And Target = Empty Then
Range("D" & Lig) = ""
Range("C" & Lig).Select
MsgBox "Attention: Infos incomplete(s)!!!!!!"
GoTo fin
End If
Set xplage = Range("E" & Rows.Count).End(xlUp) 'tri croissant pour la colonne f (n° de téléphone)
Set xplage = Range(Range("E1"), xplage) 'tri croissant pour la colonne f (n° de téléphone)
xplage.Sort key1:=Range("E1"), order1:=xlAscending, header:=xlYes 'tri croissant pour la colonne e (n° de téléphone)
End If
fin:
Application.EnableEvents = True
End Sub
C'est super puissant, je crois que tu es arrivé au bout de tes peines, après quelques essais j'ai bien l'impression que cela fonctionne. Je te remercie sincèrement de coup de main et je verrais à l'usage si tout est parfait
Merci encore du super coup de main et peu être à une autre fois pour un autre problème