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 :

Recherche dans des feuilles de données


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2016
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Recherche dans des feuilles de données
    Bonjour,
    Je me suis crée un petit programme excel pour me rechercher des données en fonction de la cellule choisie je voudrai qu'il me remplisse les colonnes ou apparaissent Ca et Cs.
    Le problème c'est que mon fichier le fait mais il est trop lent (j'ai l'impression qu'il perd du temps).
    A la première itération il remplit toutes les lignes , alors que je voudrais qu'il remplisse juste chaque ligne en fonction du paramètre donné dans microwave.
    Or pour le moment il voit le premier paramètre et va remplir toutes les cases du tableau.

    Est ce que quelqu'un pourrait m'envoyer une version améliorée de ce que je demande ?

    Merci.

    Partage de gros fichier - Page de téléchargement

    Utilisateur : rl6el71w
    Mot de passe : vc5i1auh

  2. #2
    Membre confirmé
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413
    Points : 584
    Points
    584
    Par défaut
    Petit rappel : fichier joint

    Poste plutôt ton code qu'on puisse t'aider
    C'est en creusant qu'on fait des trous

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2016
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    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
    Sub Macro1()
    Dim cel As Range 'déclare la variable cel (CELlule)
    Dim Ca1 As Range 'déclare la variable Ca (Recherche
    Dim Cs1 As Range 'déclare la variable Ca (Recherche
    Dim Ca2 As Range 'déclare la variable Ca (Recherche
    Dim Cs2 As Range 'déclare la variable Ca (Recherche
    Dim i As Integer
    Dim f As Integer
     
     
    With Sheets("MO") 'prend en compte l'onglet "AVANT" (à adapter à ton cas)
    'boucle sur toutes les cellules éditées cel de la colonne A (en partant de la ligne 2)
    f = Range("K2").Value
    For i = 16 To 16 + f
     
    For Each cel In .Range("N" & i & ":AM" & i & .Cells(Application.Rows.Count, 1).End(xlUp).Row)
    'définit la recherche r (recherche la valeur de la cellule en partie dans la colonne A de l'onglet "BASE")
    If Range("B" & i).Value Like "P ou FP" Then
    Set Ca1 = Sheets("B1").Columns(1).Find(cel.Value, , xlValues, xlPart)
    Set Cs1 = Sheets("B1").Columns(1).Find(cel.Value, , xlValues, xlPart)
     
    'si il existe au moins une occurrence trouvée, place dals la colonne I de cel la valeur de la colonne C de r
    If Not Ca1 Is Nothing Then cel.Offset(0, 1).Value = Ca1.Offset(0, 1).Value
    If Not Cs1 Is Nothing Then cel.Offset(0, 2).Value = Cs1.Offset(0, 2).Value
    Else
    If Range("B" & i).Value Like "P/FP" Then
    Set Ca1 = Sheets("B2").Columns(1).Find(cel.Value, , xlValues, xlPart)
    Set Cs1 = Sheets("B2").Columns(1).Find(cel.Value, , xlValues, xlPart)
     
    'si il existe au moins une occurrence trouvée, place dals la colonne I de cel la valeur de la colonne C de r
    If Not Ca1 Is Nothing Then cel.Offset(0, 1).Value = Ca1.Offset(0, 1).Value
    If Not Cs1 Is Nothing Then cel.Offset(0, 2).Value = Cs1.Offset(0, 2).Value
    Else
    If Range("B" & i).Value Like "HP/UHX" Then
    Set Ca1 = Sheets("B3").Columns(1).Find(cel.Value, , xlValues, xlPart)
    Set Cs1 = Sheets("B3").Columns(1).Find(cel.Value, , xlValues, xlPart)
     
    'si il existe au moins une occurrence trouvée, place dals la colonne I de cel la valeur de la colonne C de r
    If Not Ca1 Is Nothing Then cel.Offset(0, 1).Value = Ca1.Offset(0, 1).Value
    If Not Cs1 Is Nothing Then cel.Offset(0, 2).Value = Cs1.Offset(0, 2).Value
    Else
    If Range("B" & i).Value Like "GP ou KP" Then
    Set Ca1 = Sheets("B4").Columns(1).Find(cel.Value, , xlValues, xlPart)
    Set Cs1 = Sheets("B4").Columns(1).Find(cel.Value, , xlValues, xlPart)
     
    'si il existe au moins une occurrence trouvée, place dals la colonne I de cel la valeur de la colonne C de r
    If Not Ca1 Is Nothing Then cel.Offset(0, 1).Value = Ca1.Offset(0, 1).Value
    If Not Cs1 Is Nothing Then cel.Offset(0, 2).Value = Cs1.Offset(0, 2).Value
    Else
    If Range("B" & i).Value Like "*B5*" Then
    Set Ca1 = Sheets("B5").Columns(1).Find(cel.Value, , xlValues, xlPart)
    Set Cs1 = Sheets("B5").Columns(1).Find(cel.Value, , xlValues, xlPart)
     
    'si il existe au moins une occurrence trouvée, place dals la colonne I de cel la valeur de la colonne C de r
    If Not Ca1 Is Nothing Then cel.Offset(0, 1).Value = Ca1.Offset(0, 1).Value
    If Not Cs1 Is Nothing Then cel.Offset(0, 2).Value = Cs1.Offset(0, 2).Value
    Else
    If Range("B" & i).Value Like "*B6*" Then
    Set Ca1 = Sheets("B6").Columns(1).Find(cel.Value, , xlValues, xlPart)
    Set Cs1 = Sheets("B6").Columns(1).Find(cel.Value, , xlValues, xlPart)
     
    'si il existe au moins une occurrence trouvée, place dals la colonne I de cel la valeur de la colonne C de r
    If Not Ca1 Is Nothing Then cel.Offset(0, 1).Value = Ca1.Offset(0, 1).Value
    If Not Cs1 Is Nothing Then cel.Offset(0, 2).Value = Cs1.Offset(0, 2).Value
    End If
    End If
    End If
    End If
    End If
    End If
    Next cel 'prochaine cellule de la boucle
    Next
     
    End With 'fin de la prise en compte de l'onglet "AVANT"
    En gros B1 correspond à P ou FP
    B2 à P/FP
    B3 à HP/UHX
    B4 à GP ou KP
    B5 et B6 ne sont pas utilisés

    En gros chaque degré donne une valeur de Ca et Cs lu dans une des feuilles Excel.
    Le programme fait déjà ce que je veux faire mais il est lent j ai l impression de faire des boucles inutiles.

    En gros il faudrait que le programme ne remplisse que les colonnes O,P,S,T,Y,Z,AD,AE,AI,AJ,AN,AO , il a parfois tendence a remplir d'autres colonnes et à effacer mes formules .

    Quelqu'un peut m'aider ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/05/2012, 10h22
  2. Réponses: 9
    Dernier message: 07/10/2010, 17h49
  3. Réponses: 2
    Dernier message: 19/01/2010, 11h08
  4. Faire des recherches dans plusieur Feuilles
    Par edpth dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/11/2009, 00h21
  5. recherche dans des données en php
    Par fraisa1985 dans le forum Langage
    Réponses: 1
    Dernier message: 19/10/2008, 19h57

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