IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

SIERREUR INDEX EQUIV PETITE VALEUR


Sujet :

Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Directrice de BU
    Inscrit en
    Avril 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directrice de BU

    Informations forums :
    Inscription : Avril 2020
    Messages : 9
    Points : 2
    Points
    2
    Par défaut SIERREUR INDEX EQUIV PETITE VALEUR
    Bonsoir,

    Je vais arrêter de m'arracher les cheveux en vous demandant de l'aide.

    Voilà, j'ai un fichier Excel dont le
    -> premier onglet "prospection" contient la base de donnée avec plusieurs colonnes
    -> second onglet "sdd" doit contenir uniquement les clients qui ont le critère "demande de devis" en colonne O de l'onglet prospection.
    1 : dans cet onglet il y a de nouvelles colonnes pour poursuivre mon suivi client. Donc les colonnes en jaune sont remplies manuellement et doivent ABSOLUMENT suivre le client quelque soit sa position même si j'applique un tri alphabétique par un critère spécifique et même si un autre client vient se positionner avant.

    Exemple du problème que je rencontre :
    -> je bascule le client ACBOBIGNY qui est dans l'onglet prospection en "demande de devis" colonne O
    1 : celui-ci va directement s'afficher sur l'onglet sdd mais dans l'ordre alphabétique et pas à la suite des autres donc en position 6 (et ainsi de suite)
    2 : le problème que cela pose c'est que les colonnes que j'ai ajoutées ne se décalent pas, donc je me retrouver avec les information du client ACPARISJOINVILLE sur le client ACBOBIGNY
    3 : si je lance un tri par sport ou autre les colonnes que j'ai ajoutées ne se décalent pas non plus...

    Autre problème :
    -> si je fait un tri par sport dans l'onglet prospection, alors cela implique une modification de l'onglet sdd, donc gros problème

    Mes questions :
    -> est ce que ce système de formule oblige le tri alphabétique obligatoire ? Si ce n'est pas obligatoire, comment faire pour intégrer les clients dans l'onglet sdd au fur et à mesure ?
    -> comment faire pour que les colonnes jaune restent liées aux lignes clients ?
    -> est il possible par la suite d'effectuer des tris personnalisés dans l'onglet prospection et/ou sdd sans que cela ne viennent perturber les formules ni même les colonnes ou il y a du texte libre dans l'onglet sdd ?

    [B]Prospection.xlsx

    Je vous joins mon document de travaille pour que vous puissiez m'aider car là je n'y arrive plus même en regardant tous les tutos et forums.

    Je vous remercie d'avance pour votre aide précieuse.
    Bonne soirée,

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Il faut laisser tomber le système par formules, trop lourd (emploi de formules matricielles). Il faut passer par un bout de code en VBA.
    A chaque changement de statut, la feuille SDD se met à jour et vous pourrez ainsi faire toutes les manip de tri et de filtres.

    Le fichier
    Pièce jointe 553158

    Le code utilisé dans le module de la feuille "Prospection" (Faire ALT + F11 pour voir le code)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Dim Club As String, Statut As String
    DimAs String, Sport As String, Type_P As String, Contact As String, Fonction As String
    Dim Adr1 As String, Adr2 As String, Cp As String, Ville As String, Pays As String, Zone As String
    Dim Tel As String, Mail As String
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Column = 15 And Target.Value <> "" Then
            N° = Target.Offset(0, -14).Value
            Club = Target.Offset(0, -13).Value
            Sport = Target.Offset(0, -12).Value
            Type_P = Target.Offset(0, -11).Value
            Contact = Target.Offset(0, -10).Value
            Fonction = Target.Offset(0, -9).Value
            Adr1 = Target.Offset(0, -8).Value
            Adr2 = Target.Offset(0, -7).Value
            Cp = Target.Offset(0, -6).Value
            Ville = Target.Offset(0, -5).Value
            Pays = Target.Offset(0, -4).Value
            Zone = Target.Offset(0, -3).Value
            Tel = Target.Offset(0, -2).Value
            Mail = Target.Offset(0, -1).Value
            Statut = Target.Value
            Relevé_des_infos
        End If
    End Sub
     
    Sub Relevé_des_infos()
        Dim f1 As Worksheet, f2 As Worksheet
        Dim DerLig_f1 As Long, DerLig_f2 As Long
        Dim i As Long
        Application.ScreenUpdating = False
        Set f1 = Sheets("Prospection")
        Set f2 = Sheets("SDD")
        If Statut <> "Demande de devis" Then
            Set c = f2.Columns(2).Find(Club, LookIn:=xlValues, lookat:=xlWhole)
            If Not c Is Nothing Then f2.Cells(c.Row, "A").EntireRow.Delete
        Else
            DerLig_f2 = f2.Range("A" & Rows.Count).End(xlUp).Row
            f2.Range(f2.Cells(DerLig_f2 + 1, "A"), f2.Cells(DerLig_f2 + 1, "C")) = Array(N°, Club, Sport)
            f2.Range(f2.Cells(DerLig_f2 + 1, "E"), f2.Cells(DerLig_f2 + 1, "N")) = Array(Contact, Fonction, Adr2, Adr2, Cp, Ville, Pays, Zone, Tel, Mail)
        End If
    End Sub
    Cdlt

  3. #3
    Candidat au Club
    Femme Profil pro
    Directrice de BU
    Inscrit en
    Avril 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directrice de BU

    Informations forums :
    Inscription : Avril 2020
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Bonjour Arturo83,

    Tut d'abord merci pour votre réponse rapide, whaou !

    C'est bien ce que je pensais "docteur"... il faut passer par du VBA mais je n'y connais strictement rien. Mais je suis là pour apprendre et comprendre surtout.

    Quand j'ouvre le document Excel, je m'aperçois que certains client dans l'onglet prospection ont le statut "demande de devis", mais n'apparaissent pas dans l'onglet sdd. D'ailleurs, les colonnes sport, contact, adresse... sont vide aussi même pour les clients qui ont déjà le bon statut.

    ->Est ce que cela sous entend que le code VBA n'est pas actif pour toutes les lignes/colonnes de l'onglet sdd ?
    ->Dois-je appliquer ce code à toutes les lignes/colonnes ?
    -> Dois-je simplement activer le code en faisant une manipulation ?

    Cela dépasse mon domaine de compétence, j'ai donc encore besoin de vos lumières pour solutionner la situation s'il vous plait.

    Merci d'avance.

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    Il s'agit là d'un problème basique de base de données avec des tables liées : Excel n'est pas un SGBD, tu vas monter une usine à gaz avec du VBA, alors qu'avec un SGBD ce serait élémentaire.
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  5. #5
    Candidat au Club
    Femme Profil pro
    Directrice de BU
    Inscrit en
    Avril 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directrice de BU

    Informations forums :
    Inscription : Avril 2020
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Bonjour Patrice740,

    Merci pour ta réponse et je suis certaine que ce doit être aussi une bonne solution. Toutefois je n'ai ni access, ni de sgdb et que j'utilise mon temps de confinement pour améliorer l'outil excel pour mes commerciaux et forcément au bureau nous n'avons pas aussi ces outils cités ci-dessus. Donc si je peux m'en sortir avec du VBA alors pourquoi pas. Mais avant tout de chose je dois comprendre pourquoi quand j'ouvre le document et que je fais exécuter cela ne fonctionne pas.

    J'attends donc la réponse de Arturo83 sur le sujet ou de tout autre personne bine entendu.

    Mille mercis pour vos réponses.

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour à tous,
    Quand j'ouvre le document Excel, je m'aperçois que certains client dans l'onglet prospection ont le statut "demande de devis", mais n'apparaissent pas dans l'onglet sdd. D'ailleurs, les colonnes sport, contact, adresse... sont vide aussi même pour les clients qui ont déjà le bon statut.
    Il aurait fallu que je vide la feuille SDD pour repartir de zéro.

    La feuille SDD se rempli automatiquement à chaque changement de valeur du statut de la feuille "prospection". Donc effacez la feuille SDD et revalidez les statuts et ajoutez en d'autres, si un statut passe de "Demande de devis" à "A contacter" ou autre chose, le club sera retiré de la SDD.

    Voici la façon de procéder en image
    Pièce jointe 553166

    Cdlt

  7. #7
    Candidat au Club
    Femme Profil pro
    Directrice de BU
    Inscrit en
    Avril 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directrice de BU

    Informations forums :
    Inscription : Avril 2020
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Arturo83,

    Ça fonctionne ! C'est génial. Donc en fait pour actualiser l'onglet 2 sdd je dois simplement valider dans la barre de formule de même quand j'ajoute un nouveau club dans l'onglet prospection pour que cela fonctionne.

    J'ai trois dernières questions:
    1: Je ne souhaite pas afficher le N° du client comment je procède pour enlever cet élément dans le code VBA ?
    2: Il me manque le nom du commercial en colonne P dans l'onglet prospection, comment je fais pour l'afficher dans le code VBA ?
    3: Normalement, l'onglet prospection et l'onglet sdd sont des documents Excel indépendant, comment faire pour le code VBA ? Est-ce possible ?

    Si vous me montrez l'exemple à suivre je veux bien tester de mon côté pour comprendre le cheminement.

    Encore une fois merci, c'est excellent !

  8. #8
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Envoyé par Accdr
    Donc en fait pour actualiser l'onglet 2 sdd je dois simplement valider dans la barre de formule
    , Ceci uniquement si vous n'avez pas changé le statut, si par contre vous changez ou ajoutez un nouveau statut, le simple fait de modifier le contenu de la cellule suffira pour être pris en compte, inutile dans ce cas de valider dans la barre de formule. Dans la vidéo, les 2 cas sont bien visibles,
    -1 cas je valide dans la barre de formules les statuts dèjà "Demande.."
    -les 2 dernier cas, je modifie le statut, donc pas besoin de valider.
    Envoyé par Accdr
    J'ai trois dernières questions:
    1: Je ne souhaite pas afficher le N° du client comment je procède pour enlever cet élément dans le code VBA ?
    2: Il me manque le nom du commercial en colonne P dans l'onglet prospection, comment je fais pour l'afficher dans le code VBA ?
    3: Normalement, l'onglet prospection et l'onglet sdd sont des documents Excel indépendant, comment faire pour le code VBA ? Est-ce possible ?
    Réponses:
    1) dans la macro "Private Sub Worksheet_Change(ByVal Target As Range), à la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    N° = Target.Offset(0, -14).Value
    mettre une apostrophe devant N°, ce qui inhibera la lecture de la ligne
    Dans la macro "Sub Relevé_des_infos()", modification de la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            f2.Range(f2.Cells(DerLig_f2 + 1, "A"), f2.Cells(DerLig_f2 + 1, "C")) = Array(N°, Club, Sport)
    remplacée par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            f2.Range(f2.Cells(DerLig_f2 + 1, "B"), f2.Cells(DerLig_f2 + 1, "C")) = Array(Club, Sport)
    2: Il me manque le nom du commercial en colonne P dans l'onglet prospection, comment je fais pour l'afficher dans le code VBA ?
    il faut déclarer la variable commercial en début de module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim Commercial as string
    puis dans la macro "Private Sub Worksheet_Change(ByVal Target As Range)
    Récupérer le nom du commercial avec la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Commercial = Target.Offset(0, 1).Value
    et enfin le restituer dans la feuille SDD avec l aligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            f2.Cells(DerLig_f2 + 1, "AA") = Commercial
    Envoyé par Accdr
    3: Normalement, l'onglet prospection et l'onglet sdd sont des documents Excel indépendant, comment faire pour le code VBA ? Est-ce possible ?
    Oui c'est possible, je vais vous préparer une macro pour cela, pas tout de suite, patientez un peu.

    Voici le fichier qui reprend tout ça
    Pièce jointe 553176

    Le code associé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Dim Club As String, Statut As String
    DimAs String, Sport As String, Type_P As String, Contact As String, Fonction As String
    Dim Adr1 As String, Adr2 As String, Cp As String, Ville As String, Pays As String, Zone As String
    Dim Tel As String, Mail As String, Commercial As String
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Column = 15 And Target.Value <> "" Then
            'N° = Target.Offset(0, -14).Value
            Club = Target.Offset(0, -13).Value
            Sport = Target.Offset(0, -12).Value
            Type_P = Target.Offset(0, -11).Value
            Contact = Target.Offset(0, -10).Value
            Fonction = Target.Offset(0, -9).Value
            Adr1 = Target.Offset(0, -8).Value
            Adr2 = Target.Offset(0, -7).Value
            Cp = Target.Offset(0, -6).Value
            Ville = Target.Offset(0, -5).Value
            Pays = Target.Offset(0, -4).Value
            Zone = Target.Offset(0, -3).Value
            Tel = Target.Offset(0, -2).Value
            Mail = Target.Offset(0, -1).Value
            Statut = Target.Value
            Commercial = Target.Offset(0, 1).Value
            Relevé_des_infos
        End If
    End Sub
     
    Sub Relevé_des_infos()
        Dim f1 As Worksheet, f2 As Worksheet
        Dim DerLig_f1 As Long, DerLig_f2 As Long
        Dim i As Long
        Application.ScreenUpdating = False
        Set f1 = Sheets("Prospection")
        Set f2 = Sheets("SDD")
        If Statut <> "Demande de devis" Then
            Set c = f2.Columns(2).Find(Club, LookIn:=xlValues, lookat:=xlWhole)
            If Not c Is Nothing Then f2.Cells(c.Row, "A").EntireRow.Delete
        Else
            DerLig_f2 = f2.Range("B" & Rows.Count).End(xlUp).Row
            f2.Range(f2.Cells(DerLig_f2 + 1, "B"), f2.Cells(DerLig_f2 + 1, "C")) = Array(Club, Sport)
            f2.Range(f2.Cells(DerLig_f2 + 1, "E"), f2.Cells(DerLig_f2 + 1, "N")) = Array(Contact, Fonction, Adr2, Adr2, Cp, Ville, Pays, Zone, Tel, Mail)
            f2.Cells(DerLig_f2 + 1, "AA") = Commercial
        End If
    End Sub
    Cdlt

  9. #9
    Candidat au Club
    Femme Profil pro
    Directrice de BU
    Inscrit en
    Avril 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directrice de BU

    Informations forums :
    Inscription : Avril 2020
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Arturo83,

    MERCI ! Cela fonctionne parfaitement.

    J'ai essayé de faire les changements moi-même mais cela n'a pas fonctionné. J'essaierai toutefois de reproduire ce code avec un autre document pour mon service production car de l'onglet 2 sdd je vais devoir créer un autre document Excel pour le suivi des achats, mais avant cela j'attends votre proposition avec 2 documents indépendants Excel Production et SDD.

    Pour le timming ne vous en faite pas, je suis en confinement (comme vous j'imagine) donc pas d'urgence dans l'immédiat et ce serait très mal venu de ma part.

    Encore merci car c'est vraiment très intéressant.

  10. #10
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Voilà,

    Tout d'abord le fichier "Prospection", à l'ouverture du fichier, une fenêtre va s'ouvrir sur "Erreur d'exécution 1004", cliquez sur fin et suivez les instructions suivantes.
    j'ai donc supprimé la feuille "SDD" puisque elle fait partie d'un autre classeur.

    Dans ce fichier "Prospection", j'ai ajouté une feuille "Emplacement_Fichier_SDD" ou vous devrez saisir dans un premier temps et une fois pour toutes, le chemin de l'emplacement du fichier "SDD" ainsi que le nom du fichier réel extension.comprise.

    Comment ça marche:
    Lorsque vous ouvrez le fichier "Prospection", ce dernier va lire l'emplacement et le nom du fichier "SDD" et va l'ouvrir en arrière plan.
    Vous n'avez plus qu'à faire les mouvements de statuts dans le fichier "Prospection", et le fichier "SDD" est mis à jour dans la foulée.

    Le fichier "Prospection"
    Pièce jointe 553210

    Le module ThisWorkbook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public ClasseurActif As String, Fichier_SDD As String
    Private Sub Workbook_Open()
        Dim Chemin As String, Fichier As String
        Application.ScreenUpdating = False
        ClasseurActif = ThisWorkbook.Name
        Chemin = Sheets("Emplacement_Fichier_SDD").Range("A2") & "\"
        Fichier = Sheets("Emplacement_Fichier_SDD").Range("B2")
        Workbooks.Open Filename:=Chemin & Fichier
        Fichier_SDD = ActiveWorkbook.Name
        Windows(ClasseurActif).Activate
        Sheets("Prospection").Select
    End Sub
    le module de la feuille "Prospection"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Dim Club As String, Statut As String
    DimAs String, Sport As String, Type_P As String, Contact As String, Fonction As String
    Dim Adr1 As String, Adr2 As String, Cp As String, Ville As String, Pays As String, Zone As String
    Dim Tel As String, Mail As String, Commercial As String
    Dim Pr As String, Cl As String
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        Application.ScreenUpdating = False
        Pr = ThisWorkbook.Name
        If Target.Column = 15 And Target.Value <> "" Then
            'N° = Target.Offset(0, -14).Value
            Club = Target.Offset(0, -13).Value
            Sport = Target.Offset(0, -12).Value
            Type_P = Target.Offset(0, -11).Value
            Contact = Target.Offset(0, -10).Value
            Fonction = Target.Offset(0, -9).Value
            Adr1 = Target.Offset(0, -8).Value
            Adr2 = Target.Offset(0, -7).Value
            Cp = Target.Offset(0, -6).Value
            Ville = Target.Offset(0, -5).Value
            Pays = Target.Offset(0, -4).Value
            Zone = Target.Offset(0, -3).Value
            Tel = Target.Offset(0, -2).Value
            Mail = Target.Offset(0, -1).Value
            Statut = Target.Value
            Commercial = Target.Offset(0, 1).Value
            Cl = Sheets("Emplacement_Fichier_SDD").Range("B2").Value
            Recopie_des_infos
            Windows(Pr).Activate
        End If
    End Sub
     
    Sub Recopie_des_infos()
        Dim f1 As Worksheet, f2 As Worksheet
        Dim DerLig_f1 As Long, DerLig_f2 As Long
        Dim i As Long
        Windows(Cl).Activate
        Set f2 = Sheets("SDD")
        If Statut <> "Demande de devis" Then
            Set c = f2.Columns(2).Find(Club, LookIn:=xlValues, lookat:=xlWhole)
            If Not c Is Nothing Then f2.Cells(c.Row, "A").EntireRow.Delete
        Else
            DerLig_f2 = f2.Range("B" & Rows.Count).End(xlUp).Row
            f2.Range(f2.Cells(DerLig_f2 + 1, "B"), f2.Cells(DerLig_f2 + 1, "C")) = Array(Club, Sport)
            f2.Range(f2.Cells(DerLig_f2 + 1, "E"), f2.Cells(DerLig_f2 + 1, "N")) = Array(Contact, Fonction, Adr2, Adr2, Cp, Ville, Pays, Zone, Tel, Mail)
            f2.Cells(DerLig_f2 + 1, "AA") = Commercial
        End If
    End Sub
    Vous pouvez dès à présent, fermer tout et ré-ouvrir le fichier "Prospection" pour travailler.

    Cdlt

  11. #11
    Candidat au Club
    Femme Profil pro
    Directrice de BU
    Inscrit en
    Avril 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directrice de BU

    Informations forums :
    Inscription : Avril 2020
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Arturo83,

    Je pense que j'y suis presque et je commence à comprendre pas mal de chose et je vous en remercie.
    J'ai donc fait exactement ce que vous m'avez demandé et effectivement les deux documents se sont ouvert automatiquement.

    Je suis allez dans Visual Basic car l'emplacement de la cellule "Commercial" dans mon fichier final SDD est situé en colonne AE et quand je valide voici ce que cela me donne comme information :
    Nom : VBA.png
Affichages : 447
Taille : 81,1 Ko

    Incompatibilité de type s'affiche.

    Autre questions
    Sachant que mon fichier final SDD comporte plusieurs feuilles (celle qui m'intéresse est Feuille 1 SDD_21), n'est ce pas cela le problème que je rencontre ?

    Par ailleurs, j'imagine que si je souhaite ajouter une colonne dans le fichier prospection et de même dans le fichier sdd, il suffira d'enregistrer comme les autres critères dans le VBA, est ce correct ? Exemple :

    Dim N° As String, Sport As String, Discipline As String, Type_P As String, Contact As String, Fonction As String

    Puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'N° = Target.Offset(0, -14).Value
            Club = Target.Offset(0, -15).Value
            Sport = Target.Offset(0, -14).Value
            Discipline = Target.Offset(0, -13).Value
            Type_P = Target.Offset(0, -12).Value
    Ainsi que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    f2.Range(f2.Cells(DerLig_f2 + 1, "B"), f2.Cells(DerLig_f2 + 1, "D")) = Array(Club, Sport, Discipline)
            f2.Range(f2.Cells(DerLig_f2 + 1, "F"), f2.Cells(DerLig_f2 + 1, "N")) = Array(Contact, Fonction, Adr2, Adr2, Cp, Ville, Pays, Zone, Tel, Mail)
            f2.Cells(DerLig_f2 + 1, "AE") = Commercial
    Je suis vraiment désolée de vous importuner comme cela mais vous m'êtes d'une grande aide moi qui ne connais rien au VBA !
    Merci pour votre temps précieux.

    Dans l'attente de vos remarques.

  12. #12
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Vous avez tout compris, les modifications que vous voulez faire semblent justes, vous êtes sur la bonne voie.

    Pour ce qui est de l'erreur "incompatibilité de type", regardez dans la feuille "SDD", si la colonne "AE" n'est pas dans un format autre que "Standard".

  13. #13
    Candidat au Club
    Femme Profil pro
    Directrice de BU
    Inscrit en
    Avril 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directrice de BU

    Informations forums :
    Inscription : Avril 2020
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Arturo83,

    J'ai supprimé toutes les formules de mon document final SDD et du document prospection, j'ai remis toutes les colonnes au format standard... Mais le même message s'affiche toujours.

    Par ailleurs, j'ai actualisé comme je vous l'avais indiqué :
    -> ajout d'une nouvelle colonne dans le doc prospection "Discipline"
    -> déplacé la colonne "Commercial" avant le statut (beaucoup plus cohérent)

    Je pense que côté code VBA j'ai bien exécuté ce que je vous ai dit précédemment. Pouvez-vous quand même vérifier ?

    Enfin, concernant le message d'erreur, je me pose la question du faite que nous nommons la feuille SDD 21 f2 alors qu'elle s'affiche en tant que feuille 1 dans visual basic, est ce que ce serait cela le problème ?

    Voilà c'est le dernier point avant que cela ne fonctionne parfaitement et je vous sollicite une nouvelle fois.

    je vous joins les nouveaux documents.

    MerciProspection.xlsmSDD.xlsx

  14. #14
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    L'erreur ne se reproduit pas chez moi, par contre j'ai vu une petite erreur sur la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            f2.Range(f2.Cells(DerLig_f2 + 1, "F"), f2.Cells(DerLig_f2 + 1, "O")) = Array(Contact, Fonction, Adr2, Adr2, Cp, Ville, Pays, Zone, Tel, Mail, Commercial)
    il y a 11 variables, or la plage sélectionnée va des colonnes "F" à "O" dans la ligne ci-dessus alors qu'elle devrait aller jusqu'à "P", donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            f2.Range(f2.Cells(DerLig_f2 + 1, "F"), f2.Cells(DerLig_f2 + 1, "P")) = Array(Contact, Fonction, Adr2, Adr2, Cp, Ville, Pays, Zone, Tel, Mail, Commercial)
    Petite remarque sans importance: pour les colonnes contenant des montants en euros, vous pouvez déclarer les colonnes en "Monétaire" plutôt qu'un "Format personnalisé".

    Revoici le code, j'ai volontairement inhiber la déclaration des variables en mettant une apostrophe devant chaque ligne (les 4 premières lignes), pour voir si l'erreur n'est pas provoquée par l'une de ces déclarations, si tout se passe bien à l'ouverture, supprimez l'apostrophe de la première ligne fermez et relancez le fichier, et ainsi de suite jusqu'à trouver la ligne qui gêne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    'Dim Club As String, Statut As String
    'Dim N° As String, Sport As String, Discipline As String, Type_P As String, Contact As String, Fonction As String
    'Dim Adr1 As String, Adr2 As String, Cp As String, Ville As String, Pays As String, Zone As String
    'Dim Tel As String, Mail As String, Commercial As String
    'Dim Pr As String, Cl As String
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        Application.ScreenUpdating = False
        Pr = ThisWorkbook.Name
        If Target.Column = 16 And Target.Value <> "" Then
            'N° = Target.Offset(0, -16).Value
            Club = Target.Offset(0, -15).Value
            Sport = Target.Offset(0, -14).Value
            Discipline = Target.Offset(0, -13).Value
            Type_P = Target.Offset(0, -12).Value
            Contact = Target.Offset(0, -11).Value
            Fonction = Target.Offset(0, -10).Value
            Adr1 = Target.Offset(0, -9).Value
            Adr2 = Target.Offset(0, -8).Value
            Cp = Target.Offset(0, -7).Value
            Ville = Target.Offset(0, -6).Value
            Pays = Target.Offset(0, -5).Value
            Zone = Target.Offset(0, -4).Value
            Tel = Target.Offset(0, -3).Value
            Mail = Target.Offset(0, -2).Value
            Commercial = Target.Offset(0, -1).Value
            Statut = Target.Value
            Cl = Sheets("Emplacement_Fichier_SDD").Range("B2").Value
            Recopie_des_infos
            Windows(Pr).Activate
        End If
    End Sub
     
    Sub Recopie_des_infos()
        Dim f2 As Worksheet
        Dim DerLig_f2 As Long
        Dim i As Long
        Windows(Cl).Activate
        Set f2 = Sheets("SDD 21")
        If Statut <> "Demande de devis" Then
            Set c = f2.Columns(2).Find(Club, LookIn:=xlValues, lookat:=xlWhole)
            If Not c Is Nothing Then f2.Cells(c.Row, "A").EntireRow.Delete
        Else
            DerLig_f2 = f2.Range("B" & Rows.Count).End(xlUp).Row
            f2.Range(f2.Cells(DerLig_f2 + 1, "B"), f2.Cells(DerLig_f2 + 1, "D")) = Array(Club, Sport, Discipline)
            f2.Range(f2.Cells(DerLig_f2 + 1, "F"), f2.Cells(DerLig_f2 + 1, "P")) = Array(Contact, Fonction, Adr2, Adr2, Cp, Ville, Pays, Zone, Tel, Mail, Commercial)
        End If
    End Sub
    Cdlt

  15. #15
    Candidat au Club
    Femme Profil pro
    Directrice de BU
    Inscrit en
    Avril 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directrice de BU

    Informations forums :
    Inscription : Avril 2020
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Arturo83,

    C'est ma dernière demande et après je quitte le navire... Je ne comprends toujours pas pourquoi quand je lance les tests j'ai toujours une erreur d’exécution 13.
    J'ai refait un copier/coller de votre code entier de nouveau et l'erreur est toujours là.

    J'ai regardé des tutos et en faisant débogage il y a la ligne : Sub Recopie_des_infos() qui apparait en jaune. Mais je ne sait pas à quoi cela correspond.

    Question :
    -> faut il nommer correctement chaque colonne dans le code VBA ?
    -----> exemple : Type est écrit Type_P dans le code VBA ? Cela peut il poser problème ?
    -> faut il donner un nom à la plage de recherche ?
    -> faut il enregistrer le même code sur la feuille prospection et la feuille sdd21 ?

    Je suis perdue. Pourriez-vous m'aider une dernière fois ?

    Je vous joins de nouveau les documents
    Prospection.xlsm
    SDD.xlsx

    Encore merci et vraiment désolée de vous importuner.
    Belle soirée.

  16. #16
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Ce que je constate, vous avez déplacé la colonne "Commercial" en colonne "P", du classeur "Prospection" mais vous n'avez pas bougé la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If Target.Column = 16 And Target.Value <> "" Then
    or, du fait de l'insertion de "Commercial" en colonne "P", la colonne "Statut" est décalée vers la droite ce qui la pousse en 17ème position donc, la ligne précédente devient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If Target.Column = 17 And Target.Value <> "" Then
    Faites cette modification et dites-moi si le problème persiste.

    Cdlt

  17. #17
    Candidat au Club
    Femme Profil pro
    Directrice de BU
    Inscrit en
    Avril 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directrice de BU

    Informations forums :
    Inscription : Avril 2020
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Bonjour Arturo83,

    Vous êtes un génie !

    Je vous remercie mille fois pour votre aide car sans vous je me serais contentée de simple tableau alors qu'Excel offre une richesse incroyable.

    Comme je vous l'avais indiqué, je dois créer un autre document du type liée cette fois si à SDD, donc je vais essayer de le faire toute seule et voir si j'y arrive. (je risque peut-être de venir vous embêter encore une fois :-)).

    Je vous souhaite une belle journée ensoleillée car vous avez ensoleillé la mienne !

    MERCI

  18. #18
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Très content pour vous que cela fonctionne.


    je dois créer un autre document du type liée cette fois si à SDD, donc je vais essayer de le faire toute seule et voir si j'y arrive
    Avec les éléments à votre disposition, vous devriez y arriver assez facilement, je reste disponible si vous avez besoin mais, faite la demande dans une autre discussion afin que toutes les personnes disponibles et de bonne volonté puissent vous répondre.

    Bon courage pour la suite.

    Cdlt

Discussions similaires

  1. Transformer une formule avec INDEX/EQUIV en valeur
    Par Romhain dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 22/08/2017, 15h29
  2. [XL-2007] Recherchev+petite.valeur ou index/match + petite valeur
    Par JMDBOULE dans le forum Excel
    Réponses: 4
    Dernier message: 31/10/2016, 09h30
  3. Index équiv petite valeur plusieurs résultats
    Par Soleil67 dans le forum Excel
    Réponses: 9
    Dernier message: 03/02/2016, 14h10
  4. Réponses: 1
    Dernier message: 05/11/2014, 00h40
  5. valeur en double et INDEX-EQUIV
    Par ericdev67 dans le forum Excel
    Réponses: 4
    Dernier message: 29/01/2011, 17h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo