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 :

[VBA-E] Recherche d'une valeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Par défaut [VBA-E] Recherche d'une valeur
    Salut a tous ! J'ai besoin de votre d'aide !

    Je vous explique ce que je voudrais faire :
    En gros des que l'on rencontre le mot "toto" sur une ligne j'aimerai que la prochaine cellule non vide située sur la meme ligne que le mot "toto" soit copié en A1.

    Petit exemple :

    Ligne 1 tata cellule vide valeur1

    Ligne 2 titi cellule vide valeur2

    Ligne 3 toto cellule vide cellule vide valeur3

    *copie de la valeur3 dans la cellule A1*

    A noter que le mot "toto" est toujours situé dans la colonne D.

    J'ai deja réalisé une macro mais il y a plusieurs problème. Voila 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
    Sub Rech()
     
      Dim DernièreLigne As Long
     
      DernièreLigne = Worksheets("Feuil1").UsedRange.Row - 1
      DernièreLigne = DernièreLigne + Worksheets("Feuil1").UsedRange.Rows.Count
     
     
      For i = 1 To DernièreLigne
     
        If Cells(i, 4).Value = "toto" Then
     
          For j = 4 To 10
     
            If Cells(i, j).Value = *cellule non vide suivant le mot "toto"* Then
              Cells(i, j).Select
            End If
     
            Selection.Cut
            Cells(1, 1).Select
            Worksheets("Feuil1").Paste
     
          Next j
     
        End If
     
      Next i
     
    End Sub
    - Au niveau du second "if" comment lui dire de prendre la cellule non vide suivante ?

    Voila des suggestions je sèche la

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     For j = 4 To 10
     
            If Cells(i, j).Value = *cellule non vide suivant le mot "toto"* Then Cells(i, j).Select
     
        Selection.Cut
        Cells(1, 1).Select
        Worksheets("Feuil1").Paste
     
        Next j
    toto est dans la colonne "D" donc recherhce à partie de la colonne 5 et pas 4...

    pas de boucle for ici... un while convient mieux.
    Si tu es sur qu'il y a une cellule non vide le code suivant ira

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    k=5
    do while (cells(i,k)="" and k<256)
      k=k+1
    loop
    cells(i,k).copy

    loop

  3. #3
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Par défaut
    Merci ca marche niquel !

    Dernier problème :

    Dans le cas ou plusieurs lignes contiennent le mot "toto" seul la dernière valeur est présente en A1 ( normal toutes les autres sont effacées par la valeur suivante ). J'ai essayé de faire un compteur pour que les valeurs ne se chevauchent pas et que la première valeur rencontrée vienne en A1, la seconde en A2, la 3e en A3 etc...

    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
     
     
    For i = 1 To DernièreLigne
     
        If Cells(i, 4).Value = "toto" Then
     
        k = 5
     
        Do While (Cells(i, k) = "" And k < 20)
        k = k + 1
        Loop
     
        l = 0
        Cells(i, k).Cut
        Cells(1 + l, 1).Select
        Worksheets("Feuil1").Paste
     
        End If
     
        l = l + 1
     
    Next i
    Marche pas . Ca doit pas etre bien compliqué mais je suis vraiment pas doué .

    Des idées ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    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
    For i = 1 To DernièreLigne
     
        If Cells(i, 4).Value = "toto" Then
     
        k = 5
     
        Do While (Cells(i, k) = "" And k < 20)
        k = k + 1
        Loop
     
        l = 1
        Cells(i, k).Cut
        Cells(l, 1).Select
        Worksheets("Feuil1").Paste
        l = l + 1
        End If
     
     
     
    Next i

  5. #5
    Membre expérimenté Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    Euh ton l=l+1 tu devrais plutôt le mettre dans ton "If" parceque sinon tu vas l'incrémenter même quand le code ne lit pas toto...

    J'ai pas bien pigé ce que le vilain elstak t'avait dit de faire...
    Il sert à quoi son do while (ça sent le bidouillage là )

  6. #6
    Membre expérimenté Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    mince alors elstak m'a devancé :p

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Toujours aussi lent le comcombre

    le while sert à copier la premiere cellule non vide... le while test le contenu des cellules et nous donne quelle est la premiere cellule non vide

    *cellule non vide suivant le mot "toto"*
    EDIT : si tu as une meilleur solution je t'ecoute

  8. #8
    Membre expérimenté Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    Ah oki parceque moi j'avais cru comprendre que c'était la cellule juste à droite de celle contenant "toto"... C'est pour ça que je pigais pas trop l'utilité

    C'est vrai t'as été plus rapide mais toi en même temps tu connaissais déjà le code vu que c'est toi qui l'avait fait !

    EDIT:non non ça me va tt à fait si tu veux je pourrais te sortir un truc alambiqué mais je pense que ta solution serait de toute manière plus simple et rapide (ça y est c'est dit )

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Haha !

    tu connaissais déjà le code vu que c'est toi qui l'avait fait !
    mais oui c'est ca

    en tout cas vaut mieux que ce soit moi que toi

    j'avais cru comprendre que c'était la cellule juste à droite de celle contenant "toto"...


    sinon coxi.... tu aurais pu le deviner car en voyant que la valeur se copiait dans la colonne A mais sur la meme ligne que la ligne où il y a toto donc qu'il prenait l'indice du "i" (enfin que ton "l" augementait de trop et qu'il etait mal placé... et y'avait pas beaucoup d'autre endroit où il pouvait aller )

  10. #10
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Par défaut
    J'avais justement à l'origine placé mon l=l+1 dans le if mais dans les 2 cas ca me met toujours les valeurs dans la cellule A1.

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Et voilà je fais le malin et on voit le résultat

    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
    l = 1
    For i = 1 To DernièreLigne
    
        If Cells(i, 4).Value = "toto" Then
        
        k = 5
        
        Do While (Cells(i, k) = "" And k < 20)
        k = k + 1
        Loop    
        
        Cells(i, k).Cut
        Cells(l, 1).Select
        Worksheets("Feuil1").Paste
        l = l + 1
        End If
        
       
            
    Next i

  12. #12
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Par défaut
    Merci ca marche !

    Aller j'arrete de vous embetez

  13. #13
    Membre expérimenté Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    Moi je trouve elstak vilain et assez peu reconnaissant....

    Après le temps que j'ai passé à lui expliquer comment marcher la création de deux malheureux seuils sur un graphique ( ) je te trouves pas très reconnaissant SNif

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

Discussions similaires

  1. Recherche d'une valeur dans un txt depuis vba excel
    Par Ted37 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/08/2008, 08h28
  2. [VBA-E]Recherche d'une valeur avec la colonne comme variable
    Par Corlo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/04/2007, 09h21
  3. [VBA-E]recherche d'une valeur particulière
    Par rifchavon dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/04/2007, 14h52
  4. [VBA] Recherche d'une valeur dans un autre fichiers puis
    Par Nicos77 dans le forum Général VBA
    Réponses: 11
    Dernier message: 24/03/2006, 11h24
  5. [D6] Recherche d'une valeur dans un fichier
    Par Lung dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2005, 08h26

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