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

Macros et VBA Excel Discussion :

Chercher des données par rapport à un numéro [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Par défaut Chercher des données par rapport à un numéro
    Bonjour à tous,

    Dernièrement j'ai créé un fichier plutôt pas mal mais l'essaye de le faire marcher en sens inverse et c'est plus difficile, je m'explique :

    J'ai demandé à des gens de renseigner des informations sur un formulaire excel et en bas du formulaire se trouve une macro qui va concaténer toutes les données sur une autre feuille excel afin de renseigner une base de donnée (BDD), exemple :

    A1 : Numéro : 001
    A2 : Nom : Dupond
    A3 : Problème constaté : Alternateur mort

    J'ai créé un autre formulaire qui permettra à modifier ce qu'ils avaient renseigné. L'autre formulaire est similaire au premier sauf que j'aimerai que cette fois-ci, en tapant le numéro 001, que les données Dupond et Pneu crevé apparaissent et qu'ils puissent par exemple modifié la cellule "A3 Alternateur mort" en par exemple --> "A3 Alternateur et batterie". Donc on aurait un formulaire de type :

    A1 : Numéro : 001 (En tapant 001 et en cliquant sur la marcro, la ligne A2 et A3 se renseigne automatique)

    A2 : Nom : Dupond
    A3 : Problème constaté : Alternateur mort

    Il modifie la ligne A3 en ajoutant : "A3 Alternateur et batterie" puis en cliquant de nouveau sur une macro, celle ci va sur la feuille base de donnée (BDD) et chercher le numéro "001" et mettre à jour la modification qu'il a apporté.

    Merci beaucoup, je galère sur excel, j'ai un petit niveau mais je me débrouille plutôt pas mal. Merci (un exemple avec un exemple de code VBA avec un descriptif des cellules et de changement de feuille serait le top).

    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une piste à adapter pour te mettre sur la voie :
    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
     
    Sub Test()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim Code As Long '<--- adapter le type !
     
        'défini la plage sur la colonne A de la feuille "Feuil2"(Base de données) à partir de A2 (évite les entêtes)
        'adapter le nom de la feuille !
        With Worksheets("Feuil2"): Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
     
        'le code à rechercher est inscrit en B1 de la feuille "Feuil1" (feuille formulaire)
        'adapter là aussi le nom de la feuille !
        Code = Worksheets("Feuil1").Range("B1").Value
     
        'effectue la recherche...
        Set Cel = Plage.Find(Code, , xlValues, xlWhole)
     
        'si trouvé, les valeurs inscrites en B2 et B3 seront reportées dans la colonne B et C face à la cellule
        'contenant le code recherché
        If Not Cel Is Nothing Then
     
            Cel.Offset(, 1).Value = Worksheets("Feuil1").Range("B2").Value
            Cel.Offset(, 2).Value = Worksheets("Feuil1").Range("B3").Value
     
        End If
     
    End Sub

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Je pense qu'avant d'envisager ce type de développement, il faut prendre un peu de recul et se demander si ces formulaires apportent vraiment une plus-value par rapport à une saisie directe en cellule.

    Perso, j'ai pu constaté que la saisie en UserForm est généralement plus contraignante que la saisie en cellule.

    Si la plus-value est simplement la fonction de recherche lors de modifications, il y a bien plus simple pour faire ça.

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    exactement du même avis …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Par défaut
    Citation Envoyé par Theze Voir le message
    Bonjour,

    Une piste à adapter pour te mettre sur la voie :
    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
     
    Sub Test()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim Code As Long '<--- adapter le type !
     
        'défini la plage sur la colonne A de la feuille "Feuil2"(Base de données) à partir de A2 (évite les entêtes)
        'adapter le nom de la feuille !
        With Worksheets("Feuil2"): Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
     
        'le code à rechercher est inscrit en B1 de la feuille "Feuil1" (feuille formulaire)
        'adapter là aussi le nom de la feuille !
        Code = Worksheets("Feuil1").Range("B1").Value
     
        'effectue la recherche...
        Set Cel = Plage.Find(Code, , xlValues, xlWhole)
     
        'si trouvé, les valeurs inscrites en B2 et B3 seront reportées dans la colonne B et C face à la cellule
        'contenant le code recherché
        If Not Cel Is Nothing Then
     
            Cel.Offset(, 1).Value = Worksheets("Feuil1").Range("B2").Value
            Cel.Offset(, 2).Value = Worksheets("Feuil1").Range("B3").Value
     
        End If
     
    End Sub
    Euhreu Euhreu (je tousse)

    Merci Theze pour ta réponse mais comment l'appliquerais-tu si je te donnes ces 2 images ? Car honnêtement, mes connaissances sont un peu limites

    Citation Envoyé par Menhir Voir le message
    Je pense qu'avant d'envisager ce type de développement, il faut prendre un peu de recul et se demander si ces formulaires apportent vraiment une plus-value par rapport à une saisie directe en cellule.

    Perso, j'ai pu constaté que la saisie en UserForm est généralement plus contraignante que la saisie en cellule.

    Si la plus-value est simplement la fonction de recherche lors de modifications, il y a bien plus simple pour faire ça.
    Citation Envoyé par Marc-L Voir le message
    Bonjour,

    exactement du même avis …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    Bonjour Menhir et Marc-L, je vais mieux vous exposer la situation avec ces 2 images.

    Sur un fichier excel qui va être utilisé par différentes personnes de différents services, j'ai 3 feuilles :

    - Première feuille : "MAJ BDD"
    - Deuxième feuille : "BDD"
    - Troisième feuille : Je ne vais pas l'évoquer mais cette feuille permettra de renseigner les données régulièrement et donc créer des lignes dans la BDD (elle est déja faites et sur l'aspect programmation aussi)

    Revenons-en au 2 premières feuilles :

    La première feuille "MAJ BDD", doit me permettre (moi ou d'autres personnes) de charger des données provenant de la "BDD" puis dans un second temps, de les modifier et les réinjecter dans la feuille "BDD" afin de les mettre à jour. Exemple :

    Je suis sur la feuille "MAJ BDD", je vais en cellule G7 et j'inscris le numéro 000001 et je clique sur la boutton "Charger la fiche", à ce moment là les données se renseignent grace à la macro qui va chercher dans la feuille "BDD" le numéro de la ligne en colonne "B" correspondant au numéro 000001 et me charger toutes la ligne sur ma première feuille "MAJ BDD". Jusque là me diriez-vous je peux le faire avec des simples formules de base, c'est vrai. Mais là ou ça ce corse, c'est que si je modifie une donnée de la cellule D22 et je souhaite qu'elle se réinjecte sur ma feuille "BDD" pourla mettre à jour, ça devient plus difficile. Et je me suis dit, qu'un deuxième boutton que j'ai appelé "METTRE A JOUR", pourrait allez chercher dans la feuille "BDD" de nouveau la ligne et tout simplement la mettre à jour.. (attendez j'ai plus de respiration, je reprends mon souffle...) Voila pour l'exemple.

    La deuxième feuille "BDD" sert seulement à stocker toutes les données.

    Et la vous allez me dire, pourquoi tu stockes tes données sur une feuille "BDD", tu pourrais faire plus simple ... etc... Je les mets dans ce fichier car on me l'a demandé de les mettre et les personnes y tiennes car c'est plus rapide pour la consultation.

    Voila, j'espère vous avoir apporté plus de billes afin que vous puissiez m'aider en me renseignant les cellules et les feuilles concernées dans le code de programmation VBA.

    Merci et j'espère vous avoir éclairé dans ma demande.

    IMAGE 1
    Nom : 1.png
Affichages : 249
Taille : 36,7 Ko

    IMAGE 2
    Nom : 2.png
Affichages : 240
Taille : 12,1 Ko

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par etranger5 Voir le message
    La première feuille "MAJ BDD", doit me permettre (moi ou d'autres personnes) de charger des données provenant de la "BDD" puis dans un second temps, de les modifier et les réinjecter dans la feuille "BDD" afin de les mettre à jour.
    J'avais bien compris ce principe.
    La question que je pose est : es-tu sûr que ton onglet "MAJ BDD" apporte une réelle plus-value par rapport à une saisie directe dans l'onglet BDD ?
    Ou, du moins, es-tu sûr que cette hypothétique plus-value puisse compenser le temps de développement et les complications qu'elle cause ?

    D'autant plus que, à priori, le VBA ne semble pas être un langage que tu maitrises et donc que tu mets en place des outils sur lesquels tu n'as pas le contrôle.

    Je ne prétends pas connaitre la réponse, mais la question vaut bien que tu prennes quelques minutes à y réfléchir avant de passer des heures de développement, non ?

    Et la vous allez me dire, pourquoi tu stockes tes données sur une feuille "BDD", tu pourrais faire plus simple
    Absolument pas.
    Ce que je remets en cause n'est pas la feuille BDD (même s'il y aurait à dire sur l'utilisation d'Excel en tant que SGBD) mais la feuille "MAJ BDD".

  7. #7
    Membre habitué
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Par défaut
    Citation Envoyé par Menhir Voir le message
    J'avais bien compris ce principe.
    La question que je pose est : es-tu sûr que ton onglet "MAJ BDD" apporte une réelle plus-value par rapport à une saisie directe dans l'onglet BDD ?
    Ou, du moins, es-tu sûr que cette hypothétique plus-value puisse compenser le temps de développement et les complications qu'elle cause ?

    D'autant plus que, à priori, le VBA ne semble pas être un langage que tu maitrises et donc que tu mets en place des outils sur lesquels tu n'as pas le contrôle.

    Je ne prétends pas connaitre la réponse, mais la question vaut bien que tu prennes quelques minutes à y réfléchir avant de passer des heures de développement, non ?


    Absolument pas.
    Ce que je remets en cause n'est pas la feuille BDD (même s'il y aurait à dire sur l'utilisation d'Excel en tant que SGBD) mais la feuille "MAJ BDD".
    Salut Menhir, je comprends ce que tu veux dire. L'exemple que je t'ai donné, n'est qu'une infime partie du vrai tableau en terme de colonne et de ligne. Je conçois que derrière il peut y avoir un nombre d'heure conséquent mais la tâche peut paraitre complexe et en vérité la programmation peut être bien plus simple qu'on ne pourrait le croire. Par exemple, je connais un peu mieux les formules et je vais te citer un exemple un peu banal mais que je maîtrise un peu mieux : La fonction NB.SI et la fonction NB.SI.ENS la différence est toute bête mais la version ENS prends en compte plus de critère et rend plus lourd l'actualisation des données si une macro vient s'ajouter derrière. Pourquoi faire compliqué quand on peut faire simple. Je pense que pour la programmation de la macro c'est la même chose, c'est pas quelque chose de très lourd mais faut juste savoir les bons mots pour que cela fonctionne.

    Je dirai que je bidouille sur les macros, regarde ce que j'ai fait et tout seul en plus (je garde pas mal de données et je les mets ensemble pour bien m'en sortir) :

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    Sub BE_MONTAGE_SAV()
    '
    ' BE_MONTAGE_SAV Macro
    '
     
    If Range("D13") = "" Then
    MsgBox "J'aimerai savoir qui vous êtes < NOM DU REDACTEUR > !"
    Exit Sub
    End If
     
    If Range("D18") = "" Then
    MsgBox "Vous devez saisir LE N° DU BON D'ORDRE < AFXXXX > !"
    Exit Sub
    End If
     
    If Range("g48") = 0 Then
    MsgBox "Merci de mettre au moins une < x > pour déterminer l'anomalie liée à cette NQ !"
    Exit Sub
    End If
     
     
    ActiveWorkbook.Save ' METTRE UN ENREGISTREMENT A CE NIVEAU, ME PERMET D'ANTICIPER LES MODIFICATIONS QUE D'AUTRES PERSONNES AURAIENT PU APPORTER AU FICHIER DANS UNE SITUATION OU JE TRAVAILLE EN MODE PARTAGÉ
     
        Sheets("CAPITALISER 1").Select
        Rows("6:6").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove ' INSERER LIGNE
     
        Range("A7").Select
        Selection.AutoFill Destination:=Range("A6:A7"), Type:=xlFillDefault
        Range("A6:A7").Select
        Range("A6").Select
        Selection.AutoFill Destination:=Range("A6:AD6"), Type:=xlFillDefault
        Range("A6:AD6").Select
     
        Range("B7:B8").Select ' INCREMENTER NUMERO
        Range("B8").Activate
        Selection.AutoFill Destination:=Range("B6:B8"), Type:=xlFillDefault
        Range("B6:B8").Select
     
        Range("C6").Select ' MOIS
        ActiveCell.FormulaR1C1 = "=MONTH(RC[2])"
     
        Range("D6").Select  ' SEM
        ActiveCell.FormulaR1C1 = "=WEEKNUM(RC[1])"
     
        Range("B6").Select ' COPIER LE NUMERO DE LA FEUILLE "CAPITALISER 1" VERS "FICHE NC"
        Selection.Copy
        Sheets("FICHE NC").Select
        Range("L3").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
        Range("G8") = Date ' COPIER DATE AUTOMATIQUEMENT
     
        Range("M3:AN3").Select ' COPIER TOUTES LES DONNEES
        Selection.Copy
        Sheets("CAPITALISER 1").Select
     
        Range("E6").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
        Range("E6,AF6").Select
        Range("AF6").Activate
        Selection.NumberFormat = "m/d/yyyy"
        Range("C3").Select
     
        Sheets("FICHE NC").Select
    ActiveWorkbook.Save
     
    ' ENREGISTRER LE FICHIER SOUS...
     
        Sheets("FICHE NC").Select ' FAIRE UNE COPIE DE LA FEUILLE "FICHE NC"
        Sheets("FICHE NC").Copy
     
    Range("D18").Select
        Dim valeurCel As String
        valeurCel = ActiveCell.Value
     
     
    CurrentDirectory = "C:\Users\romeo\Desktop\"  ' EN LOCAL SUR MON ORDI
    ' CurrentDirectory = "\\eole\bons-ordres\" ' DANS LE DOSSIER BONS ORDRES
    ' CurrentDirectory = "C:\Users\Admin\Desktop\" ' CHEZ MOI
     
     
    Dim Chemin As String
        Chemin = CurrentDirectory
     
    ActiveWorkbook.SaveAs Filename:=Chemin + valeurCel + ".xlsx", FileFormat _
        :=xlOpenXMLWorkbook, CreateBackup:=False
        'ActiveWorkbook.Close (True) <--- JE NE SAIS PAS CE QUE CA REPRESENTE
     
    ActiveSheet.Shapes.Range(Array("Button 1", "Button 2")).Select ' SUPPRIMER LES BOUTTONS MACROS
    Selection.Delete
     
    ActiveWorkbook.Save
    ActiveWorkbook.Close
     
        Sheets("FICHE NC").Select ' RENDRE LE FORMULAIRE VIERGE
    '    Range("E1:F1").Clear ' J'AI RAJOUTÉ CETTE LIGNE CAR LA MACRO BUGGEE SANS RAISON - AVEC CA ELLE NE BUGGE PLUS
        Range("D13").Select
        Selection.ClearContents
     
        Range("L3,G8,D13,D14,D16,D17,D18,D19,D21,D22,D23,D25,D26,E26,F26,G26,H17,H18,H19,B29,H38,H39,H40,H41,H42,H43,H44,H45,H46,H47,B51,D60,B63").Select
        Range("B63").Activate
        Selection.ClearContents
        Range("D13").Select
     
    ActiveWorkbook.Save
    'ActiveWorkbook.Close
     
    '
    End Sub
    Je mets régulièrement des commentaires dans mes macros de façon à m'en servir de nouveau et surtout à pouvoir être autonome. Tu pourrais me dire d'apprendre la programmation mais ce n'est pas mon coeur de métier et j'essaye juste d'apporter des solutions via excel quand je sais que c'est réalisable et surtout que j'en suis incapable sur cet aspect. Après il existe 2 écoles pour dire si excel pourrait jouer le rôle d'un SGBD ou pas. Dans mon cas, je te dirai tout simplement que je n'ai pas les moyens d'avoir autre chose et qu'excel me paraît être l'outil le plus adapté financièrement et surtout très simple à utiliser pour une petite entreprise familiale. Laisse nous le temps de nous développer et après j'investirai pour m'offrir quelque chose de plus grand. Merci de ton commentaire et oui c'est ça dont j'ai besoin

  8. #8
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Re,

    Les deux procs pour récup et mise à jour :
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    Sub ChargerFiche()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim Code As Long '<--- adapter le type !
     
        'défini la plage sur la colonne B de la feuille "BDD"(Base de données) à partir de B2
        With Worksheets("BDD"): Set Plage = .Range(.Cells(2, 2), .Cells(.Rows.Count, 2).End(xlUp)): End With
     
        With Worksheets("MAJ BDD")
     
           'le code à rechercher est inscrit en G7 de la feuille "MAJ BDD"
           Code = .Range("G7").Value
     
           'effectue la recherche...
           Set Cel = Plage.Find(Code, , xlValues, xlWhole)
     
           If Not Cel Is Nothing Then
     
               .Range("G8").Value = Cel.Offset(, 1).Value
               .Range("D13").Value = Cel.Offset(, 2).Value
               .Range("D15").Value = Cel.Offset(, 3).Value
               .Range("D22").Value = Cel.Offset(, 4).Value
     
           End If
     
        End With
     
    End Sub
     
    Sub MettreAJour()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim Code As Long '<--- adapter le type !
     
        'défini la plage sur la colonne B de la feuille "BDD"(Base de données) à partir de B2
        With Worksheets("BDD"): Set Plage = .Range(.Cells(2, 2), .Cells(.Rows.Count, 2).End(xlUp)): End With
     
        With Worksheets("MAJ BDD")
     
           'le code à rechercher est inscrit en G7 de la feuille "MAJ BDD"
           Code = .Range("G7").Value
     
           'effectue la recherche...
           Set Cel = Plage.Find(Code, , xlValues, xlWhole)
     
           If Not Cel Is Nothing Then
     
               Cel.Offset(, 1).Value = .Range("G8").Value
               Cel.Offset(, 2).Value = .Range("D13").Value
               Cel.Offset(, 3).Value = .Range("D15").Value
               Cel.Offset(, 4).Value = .Range("D22").Value
     
           End If
     
        End With
     
    End Sub

  9. #9
    Membre habitué
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Par défaut
    Citation Envoyé par Theze Voir le message
    Re,

    Les deux procs pour récup et mise à jour :
    Sérieux je ne sais pas comment te remercier Theze, c'est exactement ce dont j'avais besoin. Mon fichier marche du tonnerre grâce à toi. Par contre si ça ne te dérange pas, peux-tu m'apporter 2-3 réponses à mes questions de façon à ce que je comprenne bien ton codage et que j'en fasse une copie dans ma bibliothèque de pense bête. J'ai tendance à recenser pas mal d'information sur un fichier excel (une sorte de pense bête) et je te le cache pas, que ça m'aide énormément et que je gagne pas mal de temps grâce à ça.

    Ça concerne :

    With Worksheets("BDD"): Set Plage = .Range(.Cells(2, 2), .Cells(.Rows.Count, 2).End(xlUp)): .Rows.Count, 2) : En autre si j'ai bien compris, ce code me dit "je vais chercher l'information par rapport au nombre de ligne, à partir de la colonne 2 ?" C'est bien ça ?

    Après tu m'avais dit d'adapter mon type mais j'ai laissé tel quel :

    '<--- adapter le type !
    Que veut dire Long et aurai-je du changer ?

    Merci encore sérieux.

  10. #10
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Voila les explications :
    la plage est définie sur la colonne B à partir de la ligne 2 (.Cells(Num ligne, Num colonne)) sur la feuille "BDD"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    With Worksheets("BDD"): Set Plage = .Range(.Cells(2, 2), .Cells(.Rows.Count, 2).End(xlUp)): End With
    que tu peut écrire aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    With Worksheets("BDD"): Set Plage = .Range(.Cells(2, "B"), .Cells(.Rows.Count, "B").End(xlUp)): End With
    les deux points indiquant au compilateur que c'est un retour à la ligne. Comme l'instruction est simple, ça permet d'écrire 1 ligne au lieu de 3 mais tu pourrais écrire l'instruction de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    With Worksheets("BDD")
        Set Plage = .Range(.Cells(2, 2), .Cells(.Rows.Count, 2).End(xlUp))
    End With
    Concernant le typage du code, ne sachant pas (au début) si il était vraiment de type Long (seulement numérique et pouvant être supérieur à 32767) c'est pour ça que j'ai précisé car tu pourrait avoir des codes alphanumérique et donc, de type String

  11. #11
    Membre habitué
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Par défaut
    Merci encore pour tes réponses claires.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Afficher des données par rapport à une liste de mois
    Par Lepetitlezard51 dans le forum Excel
    Réponses: 5
    Dernier message: 05/12/2014, 23h36
  2. Réponses: 2
    Dernier message: 15/10/2010, 10h47
  3. Récuperer des données par rapport a des cases d'option
    Par FCL31 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 04/03/2010, 14h47
  4. envoyer des données par rapport à une checkbox
    Par dudu134 dans le forum Langage
    Réponses: 2
    Dernier message: 18/05/2007, 17h57
  5. Centrer des données par rapport à un texte "parent"
    Par firejocker dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 08/01/2007, 15h44

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