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 valeur ds un tableau


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Points : 46
    Points
    46
    Par défaut Recherche valeur ds un tableau
    Bonjour,
    Je recherche de l'aide pour faire une recherche des cellules qui ont la valeurs -1000 dans mon tableau, et leurs données la valeur de la cellule au dessus.
    Exemple:
    - la cellule B6 contient -1000, je veus lui mettre la valeur de la cellule B5
    - la cellule D4 contient -1000, je veus lui mettre la valeur de la cellule D3
    etc... sachant que la valeur -1000 peut etre n'importe où dans mon tableau.

    Voici le fichier ci joint.

    Merci d'avance pour vos solutions.
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Vous pouvez essayer en copiant ce code dans votre feuille :

    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
    Private Sub CommandButton1_Click()
    Dim plg As Range, cel As Range
    dl = Range("B65536").End(xlUp).Row
    Set plg = Range("B2:G" & dl)
     
    For Each cel In plg
    If cel.Value = -1000 Then
    adr = cel.Address
    lgn = cel.Row
     
        If lgn = 2 Then
        MsgBox "La valeur -1000 a été trouvée en " & adr & "!" & Chr(10) _
        & "Impossible de modifier cette valeur qui se trouve sous la ligne de titre."
        Else
        col = cel.Column
        cel.Value = Range(Cells(lgn - 1, col), Cells(lgn - 1, col)).Value
        End If
    End If
    Next
    End Sub

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Points : 46
    Points
    46
    Par défaut
    Merci pour ton aide

    J'ai essayé le code => c'est tout à fait ce que je voulais, car moi j'avais des boucles de recherche pour chaques colonnes - lignes, votre solution est plus rapide.

    Par contre, si vous avez le temps, pouvez vous mettre des commentaires pour que je puisse bien comprendre votre code.

    Merci encore

  4. #4
    Invité
    Invité(e)
    Par défaut
    Voilà :

    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
    Option Explicit
    Private Sub CommandButton1_Click()
    Dim plg As Range, cel As Range, adr$, lgn&, col%, dl&
     
    'Recherche du N° de la dernière ligne absolue renseignée pour la colonne "B"
    dl = Range("B65536").End(xlUp).Row
     
    'Définition de la plage contenant les données
    Set plg = Range("B2:G" & dl)
     
    'Pour chaque cellule contenue dans la plage définie par la variable "plg"
    For Each cel In plg
    'si la valeur de la cellule définie par la variable "cel" est = -1000
    If cel.Value = -1000 Then
    'affectation de l'adresse de la cellule à la variable "adr" exemple ($C$4)
    adr = cel.Address
    'affectation du N° de ligne de la cellule traitée à la variable "lgn"
    lgn = cel.Row
     
        'Si la valeur recherchée (-1000) a été trouvée en ligne 2 on signale l'impossiblité _
        d'affecter la valeur de la cellule du dessus puisqu'il s'agit d'une ligne de titre
        If lgn = 2 Then
        MsgBox "La valeur -1000 a été trouvée en " & adr & "!" & Chr(10) _
        & "Impossible de modifier cette valeur qui se trouve sous la ligne de titre."
        'sinon
        Else
        'affectation du N° de colonne de la cellule traitée à la variable "col"
        col = cel.Column
        'affectation à la cellule traitée de la valeur de la cellule de la ligne précédente et de la même colonne
        cel.Value = Range(Cells(lgn - 1, col), Cells(lgn - 1, col)).Value
        End If
    End If
    'Traitement de la cellule suivante
    Next
     
    End Sub
    Vous pouvez coller ce nouveau code (et supprimer ensuite les commentaires si vous le voulez).

    J'ai ajouté : "Option Explicit" qui permet avec "Outils" puis "Débogage" de vérifier que toutes les variables ont été déclarées (ce qui est conseillé).

    Pour la déclaration des variables, si besoin est, vous pouvez regarder ici :

    http://silkyroad.developpez.com/VBA/LesVariables/#LII-E

    Pour la recherche de la dernière ligne renseignée, mais aussi d'autres possibilités, regarder ici :

    http://www.developpez.net/forums/d33...uille-calculs/
    Dernière modification par Invité ; 12/10/2008 à 10h41.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Points : 46
    Points
    46
    Par défaut
    Merci encore pour avoir pris le temps pour tes explications

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

Discussions similaires

  1. [XL-2007] Recherche valeur & copier coller tableau
    Par ARTETA13 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/03/2012, 12h44
  2. recherche valeurs d'un tableau dans autre tableau
    Par gct70 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 05/06/2010, 10h48
  3. Recherche valeur dans un tableau
    Par Vassili68 dans le forum MATLAB
    Réponses: 2
    Dernier message: 19/04/2010, 11h20
  4. Recherche Valeur pour nouveau tableau
    Par kenobyalex dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/01/2008, 12h23

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