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 de caractères dans une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    Points : 55
    Points
    55
    Par défaut Recherche de caractères dans une cellule
    Bonjour,

    Je souhaite trouver la première cellule qui contient 08:
    Pour cela je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    While Worksheets("Buffer").Range("C" & deb).Value <> "08:*"
                   deb = deb + 1
    Wend
    En pensant que * était un carcartère générique.
    Comment puis je faire.
    Merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    deb = 1
    While instr(Worksheets("Buffer").Range("C" & deb).Value, "08:") = 0
                   deb = deb + 1
    Wend
    Tu peux aussi utiliser Find -> F1

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Hello,

    J'avais fais ça un coup. Si ça peut t'être utile !
    Dans ValeurCherche tu y met ce que tu veux chercher.
    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
    Sub ChercheValeur()
    Dim Lign As Long, Coll As Long, Ajout As Byte, ValeurCherche As Variant
    Dim RP As Long, I As Long, cl As Variant, CellDeRecherche As Variant
     
    ValeurCherche = "*VAR*" ' VALEUR A CHERCHER
    CellDeRecherche = "A1:C100" ' PLAGE DE RECHERCHE
     
    Lign = 0 ' INITIALISE - LIGNE A TRAITER(SOIT LA LIGNE VARIABLE OU BIEN LA DERNIERE LIGNE UTILISE)
    Coll = 0 ' INITIALISE - JUSTE POUR INFO, COLONNE A TRAITER
    Ajout = 0 ' INITIALISE - AJOUT A LIGN SI PAS DE LIGNE VARIABLES
     
        For Each cl In ActiveSheet.Range(CellDeRecherche)
            If UCase(cl) Like ValeurCherche Then
                Lign = cl.Row
                Coll = cl.Column
                GoTo Suite
            End If
        Next cl
    Suite:
        RP = Lign
            If Lign = 0 Then ' PAS TROUVE DE VALEUR ALORS RECHERCHE DEPUIS LA FIN LA DERNIERE LIGNE CONTENANT UN CARACTERE
                For I = 1 To 256
                    If Lign < Cells(65536, I).End(xlUp).Row Then
                        Lign = Cells(65536, I).End(xlUp).Row
                        Coll = Cells(65536, I).Column
                    End If
                Next I
                Ajout = 4
                RP = (Lign + Ajout)
            End If
     
            MsgBox ("VALEUR UTILE (RP) : " & RP & Chr(10) & "LIGNE TROUVE (Lign) : " & Lign _
            & Chr(10) & "COLONNE TROUVE (Coll) : " & Coll & Chr(10) & "VOICI LA VALEUR : " & cl)
    End Sub

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par ouskel'n'or
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    deb = 1
    While instr(Worksheets("Buffer").Range("C" & deb).Value, "08:") = 0
                   deb = deb + 1
    Wend
    Tu peux aussi utiliser Find -> F1
    ça marche pô

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    Tu peux utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim v As Integer
     
    On Error Resume Next
    v = Application.Match("08:*", Worksheets("Feuil1").Columns("C"), 0)
    On Error GoTo 0
     
    If v <> 0 Then MsgBox "Trouvé ligne: " & v


    michel

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par SilkyRoad
    bonjour

    Tu peux utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim v As Integer
     
    On Error Resume Next
    v = Application.Match("08:*", Worksheets("Feuil1").Columns("C"), 0)
    On Error GoTo 0
     
    If v <> 0 Then MsgBox "Trouvé ligne: " & v


    michel
    Je ne comprend pas ce que c'est censé faire. En plus je ne parvient pas a avoir l'aide (F1) sur Match. Je l'ai lancé mais ça m'a rien fait je vais le mettre dans une boucle while pour voir.

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    Rebonjour

    Je ne comprend pas ce que c'est censé faire.
    ça fait ce que tu as demandé:
    trouver la première cellule qui contient 08:
    La procédure cherche la chaîne de caractères 08: dans la colonne C de la feuille nommée "Feuil1".


    Application.Match correspond à la formule EQUIV lorsque tu utilises des fonctions de la feuille de calcul.
    EQUIV(valeur_cherchée;matrice_recherche;type)
    soit:
    Application.Match("08:*", Worksheets("Feuil1").Columns("C"), 0)



    michel

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    Points : 55
    Points
    55
    Par défaut
    Ok alors j'ai peut être oublier de préciser quelque chose d'important, c'est que ma cellule contient pas simplement 08: , mais 08:01 ensuite 08: 11 ansi de suite. c'est mon heure qui s'incrémente.
    Et mois je souhaite trouver s le numéro de ma première ligne où j'ai 08: quelque chose...

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    ... Visiblement tu n'as pas essayé la macro ...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par SilkyRoad
    ... Visiblement tu n'as pas essayé la macro ...
    Ben si j'ai testé? Si tu veux je t'envoie m macro.
    Le problème à tout ça c'est que je débute...

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    Points : 55
    Points
    55
    Par défaut
    Voici une partie de ma macro où j'essaie d'intégrer ton code.
    J'ai même essayé de le mettre dans une boucle while mais quand je l'exécute en pas a pas V ne change pas de valeur.

    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
    Function Dispo(an As String, mois As String, dernierjour As String)
     
    Dim I               As Integer 'compteur première boucle while
    Dim j               As Integer   'compteur seconde boucle while
    Dim k               As Integer
    Dim l               As Integer
    Dim nom             As String  ' Nom de l'imprimante
    Dim rep             As String  'répetoire où se trouve le fichier à importer
    Dim add             As Integer
    Dim moy             As Single
    Dim deb             As Integer
    Dim fin             As Integer
    Dim jourfin         As Integer
    Dim DerniereLigne   As Long
     
    Dim temp As Object
     
     
    jourfin = Val(dernierjour)
    I = 1
    While Worksheets("References").Range("F" & I).Value <> "END" 'Parcour de la colonne du fichier référence
        If (Worksheets("References").Range("F" & I).Value = "Dispo") Then 'quand il rencontre la valeur Dispo il commence le traitement
            nom = Range("C" & I).Value
            For j = 1 To jourfin
                If j < 10 Then
                    rep = an & mois & "0" & j 'permet d'ecrire correctement le nom du répertoire
                Else: rep = an & mois & j
                End If
                Call Import(rep, "E" & I, 0) 'importation du fichier
     
                '*** Recherche la ligne des 8 heures***
               ' deb = 1
               ' While Worksheets("Buffer").Range("C" & deb).Value <> "08:"
               '    deb = deb + 1
               ' Wend
                Dim v As Integer
     
                On Error Resume Next
                 v = Application.Match("08:*", Worksheets("Feuil1").Columns("C"), 0)
                On Error GoTo 0
     
                If v <> 0 Then MsgBox "Trouvé ligne: " & v
     
                '**** Recherche la ligne des 18 heures ***
                fin = 1
                While Worksheets("Buffer").Range("C" & fin).Value <> "18:"
                    fin = fin + 1
                Wend
     
                '*** Moyenne les valeurs entre 8heures et 18 heures ***
                For k = deb To fin
                    add = add + Worksheets("Buffer").Range("E" & k).Value
                Next k
     
                moy = add / (fin - deb)
                Worksheets("Buffer").Cells.Clear 'vide le fichier buffer
                Worksheets("Dispo").Activate 'active la feuille qui correspond au type de données recto, rectoverso, A3,A4...
     
                DerniereLigne = ActiveSheet.UsedRange.Row
                DerniereLigne = Range("A1").CurrentRegion.End(xlDown).Row
                DerniereLigne = Range("A65535").End(xlUp).Row
                DerniereLigne = Range("A1").End(xlDown).Row
                DerniereLigne = Range("A1").SpecialCells(xlCellTypeLastCell).Row
                DerniereLigne = DerniereLigne + 1
     
                Cells("A" & DerniereLigne).Value = nom
                Cells(DerniereLigne, j).Value = moy
            Next j
     
        End If
        I = I + 1
    Wend
     
    End Function

  12. #12
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    Quel est le nom de la feuille qui contient les donnés 08:... ?


    Ressayes la macro en adaptant le nom:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Test()
    Dim v As Integer
     
    On Error Resume Next
    v = Application.Match("08:*", Worksheets("Feuil1").Columns("C"), 0)
    On Error GoTo 0
     
    If v <> 0 Then MsgBox "Trouvé ligne: " & v
    End Sub


    michel

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par SilkyRoad
    Quel est le nom de la feuille qui contient les donnés 08:... ?


    Ressayes la macro en adaptant le nom:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Test()
    Dim v As Integer
     
    On Error Resume Next
    v = Application.Match("08:*", Worksheets("Feuil1").Columns("C"), 0)
    On Error GoTo 0
     
    If v <> 0 Then MsgBox "Trouvé ligne: " & v
    End Sub


    michel
    Je l'ai fait, ma feuille s'appelle Buffer.
    Là je t'avais juste fais un copier coler pour te montrer à quel endroit j'utilise ton code.

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Citation Envoyé par SilkyRoad
    ... Visiblement tu n'as pas essayé la macro ...
    Hello silky, si la cellule ne contient pas l'heure mais un N° de série formaté, on n'a aucune chance de retrouver "08:"
    Qu'y a-t-il dans ta cellule, sebeni, en vrai, avant formatage ?
    A+

  15. #15
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Au 3° post, srame te donnait la solution que tu attendais (usage de LIKE).
    je te la fais en plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub Test()
        Dim x As Range
        For Each x In Feuil1.Range("A1").CurrentRegion.Cells
            If x.Text Like "08:*" Then Exit For
        Next
        MsgBox x.Address(True, True, xlA1, True)
    End Sub

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Effectivement, plusieurs solutions parmi celles qui t'ont été données devraient fonctionner, que ce soit avec Instr ou de préférence avec like si la cellule commence par 08:, sauf si tu te trompes de plage ou si tu n'as jamais "08:" dans tes cellules. C'est pourquoi je pose la question du format.
    Tu vérifies et tu nous dis

  17. #17
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. [XL-2010] Recherche d'une sous-chaîne de caractères dans une cellule
    Par StephThai dans le forum Excel
    Réponses: 7
    Dernier message: 13/01/2014, 05h21
  2. Réponses: 1
    Dernier message: 06/05/2007, 18h42
  3. limite Caractère dans une cellule Excel 2000
    Par Vetchostar dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/03/2007, 15h36
  4. Réponses: 1
    Dernier message: 06/12/2006, 10h22
  5. Recherche de caractere dans une cellule
    Par fmris dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/11/2006, 13h24

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