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 confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    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
    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 confirmé
    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
    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 confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    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 confirmé

    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
    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 confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    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 confirmé

    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
    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 confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    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 confirmé

    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
    Par défaut
    ... Visiblement tu n'as pas essayé la macro ...

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    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 confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    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 confirmé

    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
    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 confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    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
    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 confirmé

    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 : 56
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    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
    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 : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    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, 04h21
  2. Réponses: 1
    Dernier message: 06/05/2007, 17h42
  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, 14h36
  4. Réponses: 1
    Dernier message: 06/12/2006, 09h22
  5. Recherche de caractere dans une cellule
    Par fmris dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/11/2006, 12h24

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