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 :

Continuer la boucle en ignorant certaines cellules vide [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
    Technicien maintenance
    Inscrit en
    Mai 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 24
    Par défaut Continuer la boucle en ignorant certaines cellules vide
    Bonjour à tous,

    Je continue dans mon fichier excel avec toujours un peu plus de connaissance grâce aux contributeurs de ce forum. Cette fois-ci je bloque sur les cellules vides.


    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Sub test()
    Dim i As String
    Dim a As String
    Dim Existe As Boolean
    Dim rs As String
    Dim snturbine As String
    Dim parc As String
    Dim year As Long
    Dim objLink As Hyperlink
     
    'initialisation de i
    i = 3
     
     
    'Début de la boucle de vérification
    While i < 10
     
    snturbine = Range("E" & i)
    parc = Range("C" & i)
    year = Range("G" & i)
    rs = "RSTO155_" & snturbine & "_" & Range("G" & i)
     
    'vérification de l'existance de fichier
    Existe = Fichier_Existe("monchemin" & parc & "\" & "Return Sheet\" & snturbine & "\" & year & "\" & rs & ".xlsx")
     
    'Si le fichier ne se trouve pas sur le réseau
    If Not Existe Then Range("L" & i).Font.ColorIndex = 3
     
     
    'Si le fichier existe sur le réseau création du lien pour la machine concerné
    If Existe Then Range("L" & i).Font.ColorIndex = 10
     
    'incrémentation de i
    i = i + 1
     
    'Retour à la boucle tant que i n'a pas remplie la condition
    Wend
     
    End Sub
    Problématique

    Dans l'ensemble le code fonctionne parfaitement. Seulement dans le cas ou la cellule de la variable year est vide, on m'affichera forcément une erreur puisque year sera = a rien. Je souhaiterais pouvoir ignorer les cas ou year (Colonne G)sera vide et continuer la boucle sans pour autant ignorer le cas ou snturbine (Colonne E) sera vide.


    Auriez vous une direction a suivre ?

    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    je te propose, juste après la ligne de début de ton While, d'introduire un bloc If/End If qui vérifiera si la cellule en G n'est pas vide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    While blabla
        If Not IsEmpty(Range("G" & i).Value) Then
            ' Le traitement de ta procédure
        End If
    Wend

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 24
    Par défaut
    Merci.

    J'était partie sur quelque chose similaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("G" & i).Value <> "" Then
    Mais du coup je ne vois pas comment je peux continuer à faire incrémenter i et continuer la boucle.

  4. #4
    Membre averti Avatar de Kentarosan
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2017
    Messages : 37
    Par défaut
    Bien le bonjour !

    La solution proposée par Joe est bonne, tu mets tout ton code dans un bloc if ... end if à l'exception du i = i + 1. Et comme ça, ta boucle s'incrémente toujours, mais ton code n'est exécuté que si la condition est vraie.

    Après, il ne me semble pas que dans le cas que tu nous présentes il soit très pertinent d'utiliser une boucle While. Une boucle For serait peut-être plus adaptée.

    En espérant avoir aidé.

  5. #5
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 24
    Par défaut
    Merci de votre aide en tout cas.

    Bon voilà le résultat de la structure du code. Cependant j'ai toujours l'erreur 13 quand (G & i) renvoie sur une cellule vide. (Ligne 20 surligné en jaune)

    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
    Sub test()
    Dim i As Long
    Dim a As String
    Dim Existe As Boolean
    Dim rs As String
    Dim snturbine As String
    Dim parc As String
    Dim year As Long
    Dim objLink As Hyperlink
     
     
    'Début de la boucle de vérification
    For i = 3 To 13
     
     
    If Not IsEmpty(Range("G" & i).Value) Then
     
    snturbine = Range("E" & i)
    parc = Range("C" & i)
    year = Range("G" & i)
    rs = "RSTO155_" & snturbine & "_" & Range("G" & i)
     
    'vérification de l'existance de fichier
    Existe = Fichier_Existe("monchemin" & parc & "\" & "Return Sheet\" & snturbine & "\" & year & "\" & rs & ".xlsx")
     
    'Si le fichier ne se trouve pas sur le réseau
    If Not Existe Then Range("L" & i).Font.ColorIndex = 3
     
     
    'Si le fichier existe sur le réseau création du lien pour la machine concerné
    If Existe Then Range("L" & i).Font.ColorIndex = 10
     
    End If
     
    Next i
     
     
    End Sub

  6. #6
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 24
    Par défaut
    C'est bon en passant la variable year en Variant, l'erreur a disparue et le code se poursuit correctement. Merci

  7. #7
    Membre averti Avatar de Kentarosan
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2017
    Messages : 37
    Par défaut
    Si c'est une erreur 13 qui apparaît sur la ligne 20 du code que tu as posté, c'est parce qu'il doit pas aimer que tu passes un string dans un long.

    Tu peux essayer de changer ta variable year pour que ce soit désormais un string, ou sinon tu castes la valeur de la cellule en long.

    Si ça ne fonctionne toujours pas, essaye de déboguer ton code en posant un point d'arrêt dès le début et en regardant pas à pas ce qu'il se passe et ce que vaut chaque variable.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/11/2014, 10h49
  2. [XL-2007] Ignorer les cellules vides dans une combo-box
    Par Esak59 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/02/2011, 11h54
  3. [XL-2003] Ignorer les cellules vides
    Par joebarteam88 dans le forum Excel
    Réponses: 2
    Dernier message: 11/11/2010, 06h28
  4. ignoré si cellule non vide
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/02/2009, 22h55
  5. [VBA-E] Comment faire une boucle lorsqu'il y a des cellules vides
    Par Annick.w dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 01/02/2007, 22h39

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