Incrémentation automatique d'une formule dans une colonne [Résolu/Fermé]

Signaler
Messages postés
743
Date d'inscription
dimanche 15 novembre 2015
Statut
Membre
Dernière intervention
27 janvier 2021
-
Messages postés
743
Date d'inscription
dimanche 15 novembre 2015
Statut
Membre
Dernière intervention
27 janvier 2021
-
Bonjour,

Qui peu m'aider sur ce coup là?

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




5 réponses

Messages postés
15535
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 janvier 2021
1 441
Bonjour,

Vu que vous avez du code VBA sur la feuille de saisie, pas besoin de formule de concatenation, faites le en VBA avant le tri par numero de telephone
Messages postés
743
Date d'inscription
dimanche 15 novembre 2015
Statut
Membre
Dernière intervention
27 janvier 2021
126
Bonjour

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

Merci

Cordialement
Messages postés
15535
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 janvier 2021
1 441
Re,

Je vous fais cela.

Par contre comprends pas trop votre tri num Telephone apres tri colonnes A a C

A+
Messages postés
15535
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 janvier 2021
1 441
Re,

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.

https://www.cjoint.com/c/ELlnxZBEVvf

Testez et dites ce qu'il faudrait modifier
Messages postés
743
Date d'inscription
dimanche 15 novembre 2015
Statut
Membre
Dernière intervention
27 janvier 2021
126
Re f894009

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é

voir fichier

http://www.cjoint.com/c/ELloFYT8Ris

Cordialement
Messages postés
15535
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 janvier 2021
1 441
Re,

Tout a fait Thierry, c'est ce qui reste a faire, adapter la formule que vous utilisiez dans votre fichier d'origine, qui elle aussi a ses limites
Messages postés
15535
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 janvier 2021
1 441 >
Messages postés
15535
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 janvier 2021

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
Messages postés
743
Date d'inscription
dimanche 15 novembre 2015
Statut
Membre
Dernière intervention
27 janvier 2021
126 >
Messages postés
15535
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 janvier 2021

Re 894009

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

Salutations