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 :

probleme avec la fonction: FIND [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Retraite
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraite
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Par défaut probleme avec la fonction: FIND
    Bonjour tout le monde du forum,

    Me revoila avec mes questions!!!!!!!!!!!!

    Dans la macro ci-dessous, je fais une recherche d'un nom (NM1) de la feuille "brioche" dans la feuille"BL"; mon probleme est que si le nom n'existe pas dans "BL" je veux revenir dans "brioche", mais je ne trouve pas la bonne synthaxe.........

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If NM1.Find(cell.Value, LookIn:=xlValues) Is Nothing Then Sheets("brioche").Select
    Quelqu'un pourrait-il m'aider sur ceci S.V.P

    Merci d'avance, je sais que sur ce site il y a toujours des personnes sympas pour aider


    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
     
    Sub Macro25()
    '
    '
    ' copie de "brioche' vers "BL"
    '
    '
    Dim NM1 As String
     
    Sheets("brioche").Select
    If Worksheets("brioche").AutoFilterMode Then
        Selection.AutoFilter
        End If
     
        Range("B3").Select
        NM1 = ActiveCell.Value
        While ActiveCell <> ""
        Sheets("BL").Select
     
        If Worksheets("BL").AutoFilterMode Then
        Selection.AutoFilter
        End If
     
        Columns("B:B").Select
         Selection.Find(What:=NM1, After:=ActiveCell, LookIn:=xlValues, _
            LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=True, SearchFormat:=False).Select
     
     
            If NM1.Find(cell.Value, LookIn:=xlValues) Is Nothing Then Sheets("brioche").Select
     
     
     
        ActiveCell.Offset(0, 6).Select
        ActiveCell.Value = "X"
        Sheets("brioche").Select
        ActiveCell.Offset(1, 0).Select
        NM1 = ActiveCell.Value
     
     
        Wend
     
     
    End Sub

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Evite les Select/ activecell...

    Tu peux utiliser directement une formule excel.
    Sinon pour le code, regarde cette proposition de plus près
    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
    Sub Macro25()
    Dim NM1 As String
    Dim i As Long
    Dim c As Range
     
    Application.ScreenUpdating = False
    With Worksheets("brioche")
        .AutoFilterMode = False
        i = 3
        While .Range("B" & i).Value <> ""
            NM1 = .Range("B" & i).Value
            With Worksheets("BL")
                .AutoFilterMode = False
                Set c = .Range("B:B").Find(NM1, LookIn:=xlValues, LookAt:=xlWhole)
            End With
            If Not c Is Nothing Then
                c.Offset(0, 6).Value = "X"
                Set c = Nothing
            End If
            i = i + 1
        Wend
    End With
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Retraite
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraite
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Par défaut
    Merci mercatog pour cette reponse rapide...

    c'est super et cela fonctionne, mais mon probleme est que je voudrais que si NM1 n'est pas trouve en "BL" il revient sur la valeur en "brioche" afin de la copier pour la creer en "BL"

    Suis-je explicite????

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Il faudra comprendre le code, sinon...
    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
    Sub Macro25()
    Dim NM1 As String
    Dim i As Long
    Dim c As Range
     
    Application.ScreenUpdating = False
    With Worksheets("brioche")
        .AutoFilterMode = False
        i = 3
        While .Range("B" & i).Value <> ""
            NM1 = .Range("B" & i).Value
            With Worksheets("BL")
                .AutoFilterMode = False
                Set c = .Range("B:B").Find(NM1, LookIn:=xlValues, LookAt:=xlWhole)
                If Not c Is Nothing Then
                    c.Offset(0, 6).Value = "X"
                    Set c = Nothing
                Else
                    .Cells(.Rows.Count, "B").End(xlUp)(2) = NM1
                End If
            End With
            i = i + 1
        Wend
    End With
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Retraite
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraite
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Par défaut
    Merci mercatog,

    Je me suis permis de modifier un peu la fin de la macro par le truc suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     Else
                Sheets("BL").Select
                Range("b500").Select
                Selection.End(xlUp).Offset(2, 0).Select
                Selection.Value = NM1
     
                ActiveCell.Offset(0, 6).Select
                ActiveCell.Value = "X"
     
     
            End If
    car ta version ne fonctionnait pas comme desire!

    En tout cas maintenant cela convient a ce que je voulais.... grand merci a toi

    Petite question par rapport a la maniere de composer la macro:
    quand tu utilise au debut
    WITH
    la suite est differente de ce que j'ai l'habitude de faire, du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .AutoFilterMode = False
    alors que moi j'ecris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Worksheets("brioche").AutoFilterMode Then
        Selection.AutoFilter
        End If
    Avantage ou inconvenient???

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Evite les Select/ activecell...

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

Discussions similaires

  1. probleme avec la fonction std::find
    Par APoLLoN1234 dans le forum SL & STL
    Réponses: 10
    Dernier message: 25/12/2007, 11h23
  2. Probleme avec la fonction rename()
    Par TheZenZen dans le forum C
    Réponses: 6
    Dernier message: 08/10/2005, 15h59
  3. [LG] Problème avec la Fonction ReadLn en fin de programme
    Par killermano dans le forum Langage
    Réponses: 6
    Dernier message: 23/07/2005, 15h16
  4. [LG]Probleme avec une fonction
    Par xavier1936 dans le forum Langage
    Réponses: 7
    Dernier message: 08/02/2005, 22h48

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