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 :

Pb dans ordre de déroulement d'étapes script VB [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut Pb dans ordre de déroulement d'étapes script VB
    Bonjour à tous et a toutes

    Je suis actuellement face à un problème tout bête auquel je n'ai jamais été confronté et que je ne sais comment résoudre! je viens donc vers vous afin de trouver les réponses à mes interrogations


    Mon fichier Excel contient un script qui analyse 3 colonnes et qui affiche des pops up si certaines conditions sont remplies... Par la force des choses mon script est articulé en 3 phases, 1 pour chaque colonne..

    Le problème est que lorsque la 1ère colonne est telle qu'aucun pop up n'apparaisse (condition non remplie) et bien les autres colonnes ne semblent pas être analysées, et donc aucun pop up n'apparait alors que les 2 autres colonnes répondent aux critères pour qu'il y en aient !!

    Je ne sais pas comment faire pour que cela puisse fonctionner quand même.

    Pour info voici mon script pour l'analyse de ma 1ère colonne.... C'est quasiment le même pour les 2 autres, avec les conditions qui changent simplement....

    Merci par avance pour votre aide!!


    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
    Private Sub Workbook_Open()
     
    Dim texteCherche As String, message As String, celluleRecherche As Range, zoneRecherche As Range, lAdressePremCell As String
     
    'initialiser le texte à chercher ("s24" si on est en semaine 22)
    texteCherche = "s" & CStr(Module1.Semaine(Now) + 2)
     
     
    'initialiser la zone de recherche (colonne F)
    Set zoneRecherche = ThisWorkbook.Sheets("Feuil1").Range("H:H")
     
    message = "Ne pas oublier d'envoyer le courrier afin d'annoncer le début des travaux :" & vbNewLine
     
     
    'lancer la recherche
    Set celluleRecherche = zoneRecherche.Find(texteCherche, , xlValues, xlWhole)
    'si rien n'est trouver, quitter la procédure
    If celluleRecherche Is Nothing Then Exit Sub
    'sinon, mémoriser l'adresse de la première cellule trouvée
    lAdressePremCell = celluleRecherche.Address
    'boucler ...
    Do
    'traiter la cellule de recherche
     
    'ajouter une ligne au message
    message = message & vbNewLine & vbNewLine & "Chantier """ & celluleRecherche.Offset(0, -7) & ", " & _
    celluleRecherche.Offset(0, -5) & ", " & celluleRecherche.Offset(0, -4) & """"
     
    'rechercher la cellule suivante
    Set celluleRecherche = zoneRecherche.FindNext(celluleRecherche)
    '... tant que la cellule de recherche n'est pas revenu à la première cellule trouvée
    Loop Until celluleRecherche.Address = lAdressePremCell
    Set celluleRecherche = Nothing
     
    MsgBox message

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour,
    si tu ne mets pas tout le script, comment-veux tu que quelqu'un puisse trouver le problème ? Logique non ?

    Dès à présent, petite remarque, certainement sans impact :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'initialiser la zone de recherche (colonne F)
    Set zoneRecherche = ThisWorkbook.Sheets("Feuil1").Range("H:H")
    Tu parles de F et tu utilises H. je suppose que le commentaire est faux.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut
    Bonjour,

    Tout à fait le commentaire est faux (il y a eu des changements depuis, mais j'ai oublié de changer les commentaires!!)

    Par cntre j'ai repéré un problème qui doit être a la base de ce qui m'embête...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'si rien n'est trouver, quitter la procédure
    If celluleRecherche Is Nothing Then Exit Sub
    Le souci c'est que j'ai essayé en enlevant la commande mais ça ne marche pas... même en rajoutant un "set" ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lAdressePremCell = celluleRecherche.Address
    Ca ne marche pas.... et je ne sais pas comment modifier mon script...

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour,
    Comme la dit Godzetla. Si tu ne met pas tout le code difficile de t'aider

    Par exemple pour le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If celluleRecherche Is Nothing Then Exit Sub
    Peut être tout a fait viable si chaque recherche dans une colonne est une sub indépendante toute 3 appelé par une quatrième...

    Si par contre les code sont bout a bout, tu peut mettre un grand bloc if qui va de cette ligne à
    ta messagebox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If not  celluleRecherche Is Nothing Then
     
    'tout ton code
     
    end if
    mais ca ne jou que si tu ne trouve rien dans la colonne

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut
    Bonjour,

    Je ne voulais pas faire un post avec le code pour ne pas "trop en mettre" mais puisque vous insistez

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    Option Explicit
     
    Private Sub Workbook_Open()
     
    Dim texteCherche As String, message As String, celluleRecherche As Range, zoneRecherche As Range, lAdressePremCell As String
     
    'initialiser le texte à chercher ("s24" si on est en semaine 22)
    texteCherche = "s" & CStr(Module1.Semaine(Now) + 2)
     
     
    'initialiser la zone de recherche (colonne H)
    Set zoneRecherche = ThisWorkbook.Sheets("Feuil1").Range("H:H")
     
    message = "Ne pas oublier d'envoyer le courrier afin d'annoncer le début des travaux :" & vbNewLine
     
     
    'lancer la recherche
    Set celluleRecherche = zoneRecherche.Find(texteCherche, , xlValues, xlWhole)
    'si rien n'est trouver, quitter la procédure
    If celluleRecherche Is Nothing Then Exit Sub
    'sinon, mémoriser l'adresse de la première cellule trouvée
    lAdressePremCell = celluleRecherche.Address
    'boucler ...
    Do
    'traiter la cellule de recherche
     
    'ajouter une ligne au message
    message = message & vbNewLine & vbNewLine & "Chantier """ & celluleRecherche.Offset(0, -7) & ", " & _
    celluleRecherche.Offset(0, -5) & ", " & celluleRecherche.Offset(0, -4) & """"
     
    'rechercher la cellule suivante
    Set celluleRecherche = zoneRecherche.FindNext(celluleRecherche)
    '... tant que la cellule de recherche n'est pas revenu à la première cellule trouvée
    Loop Until celluleRecherche.Address = lAdressePremCell
    Set celluleRecherche = Nothing
     
    MsgBox message
     
    ' ---------------------------------------------------------------------------------------------
     
    Dim texteChercheL As String, messageL As String, celluleRechercheL As Range, zoneRechercheL As Range, lAdressePremCellL As String
     
    'initialiser le texte à chercher ("s24" si on est en semaine 22)
    texteChercheL = "s" & CStr(Module1.Semaine(Now))
     
     
    'initialiser la zone de recherche (colonne F)
    Set zoneRechercheL = ThisWorkbook.Sheets("Feuil1").Range("H:H")
     
    messageL = "Evelyne penses à régulariser la situation n°2 pour :" & vbNewLine
     
    'lancer la recherche
    Set celluleRechercheL = zoneRechercheL.Find(texteChercheL, , xlValues, xlWhole)
    'si rien n'est trouver, quitter la procédure
    If celluleRechercheL Is Nothing Then Exit Sub
    'sinon, mémoriser l'adresse de la première cellule trouvée
    lAdressePremCellL = celluleRechercheL.Address
    'boucler ...
    Do
    'traiter la cellule de recherche
     
    'ajouter une ligne au message
    messageL = messageL & vbNewLine & vbNewLine & "Chantier """ & celluleRechercheL.Offset(0, -7) & ", " & _
    celluleRechercheL.Offset(0, -5) & ", " & celluleRechercheL.Offset(0, -4) & """"
     
    'rechercher la cellule suivante
    Set celluleRechercheL = zoneRechercheL.FindNext(celluleRechercheL)
    '... tant que la cellule de recherche n'est pas revenu à la première cellule trouvée
    Loop Until celluleRechercheL.Address = lAdressePremCellL
    Set celluleRechercheL = Nothing
     
    MsgBox messageL
     
    ' --------------------------------------------------------------------------------------------
     
     
    Dim texteChercheFINTX As String, messageFINTX As String, celluleRechercheFINTX As Range, zoneRechercheFINTX As Range, lAdressePremCellFINTX As String
     
    'initialiser le texte à chercher ("s24" si on est en semaine 22)
    texteChercheFINTX = "s" & CStr(Module1.Semaine(Now))
     
     
    'initialiser la zone de recherche (colonne F)
    Set zoneRechercheFINTX = ThisWorkbook.Sheets("Feuil1").Range("I:I")
     
    messageFINTX = "Evelyne penses à régulariser la situation n°3 pour :" & vbNewLine
     
    'lancer la recherche
    Set celluleRechercheFINTX = zoneRechercheFINTX.Find(texteChercheFINTX, , xlValues, xlWhole)
    'si rien n'est trouver, quitter la procédure
    If celluleRechercheFINTX Is Nothing Then Exit Sub
    'sinon, mémoriser l'adresse de la première cellule trouvée
    lAdressePremCellFINTX = celluleRechercheFINTX.Address
    'boucler ...
    Do
    'traiter la cellule de recherche
     
    'ajouter une ligne au message
    messageFINTX = messageFINTX & vbNewLine & vbNewLine & "Chantier """ & celluleRechercheFINTX.Offset(0, -8) & ", " & _
    celluleRechercheFINTX.Offset(0, -6) & ", " & celluleRechercheFINTX.Offset(0, -5) & """"
     
    'rechercher la cellule suivante
    Set celluleRechercheFINTX = zoneRechercheFINTX.FindNext(celluleRechercheFINTX)
    '... tant que la cellule de recherche n'est pas revenu à la première cellule trouvée
    Loop Until celluleRechercheFINTX.Address = lAdressePremCellFINTX
    Set celluleRechercheFINTX = Nothing
     
    MsgBox messageFINTX
     
    End Sub
    Remarque: après chaque

    '----------------------------------------------
    on retrouve le même code mais avec d'autres conditions, et appliqué à d'autres colonnes....

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut
    Ca y est solution trouvée.........

    Il fallait mettre ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If celluleRecherche Is Nothing Then 
    'ON FAIT RIEN 
    Else
    et rajouter un End If a la fin........

    Voila tout!!

    Merci a tous quand même pour votre collaboration!!

    Bonne journée.......

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

Discussions similaires

  1. [LDAP] Ajout dans un annuaire ldap via un script php
    Par pascale86 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 24/11/2006, 11h58
  2. Lister dans ordre alpha
    Par richard038 dans le forum Requêtes
    Réponses: 10
    Dernier message: 25/07/2006, 17h47
  3. tri dans ordre requete
    Par bleep dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/06/2006, 11h57
  4. javascript dans le src de la balise script, est-ce possible?
    Par dam_moreyllo dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 13/01/2006, 17h18
  5. Syntaxe tableaux dans ordre SQL INSERT
    Par lio33 dans le forum SQL
    Réponses: 6
    Dernier message: 19/10/2005, 17h07

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