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 :

[E-03] - Macro saut de ligne si cellule vide


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Par défaut [E-03] - Macro saut de ligne si cellule vide
    Bonjour à tous,
    Je suis débutante en VBA et encore plus en forum, alors désolé par avance si ma question est triviale.

    J'ai créé une macro qui attribue un code couleur en fonction du nombre présent dans une cellule, en partant d'une ligne i jusqu'à la fin de la feuille.
    Mais mes nombres peuvent être séparés par des lignes sans valeur.

    Je souhaite que, si la cellule est vide, la macro passe à la ligne suivante.

    Ma ligne de code est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        If Worksheets("nom de ma feuille").Cells(i, 10) = "" Then
           ActiveSheet.Cells(i + 1, 10).Select
        End If
    C'est l'expression du terme "vide" qui semble poser probleme (si je mets quoique soit d'autre à la place ca marche tres bien). On n'utilise pas "" pour dire "vide"?

    J'ai également essayé le:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Worksheets("nom de ma feuille").Cells(i, 10).Value = "" Then ' (ça lui plait pas)
    If IsEmpty Worksheets("nom de ma feuille").Cells(i, 10) = True Then ' (ca lui plait encore moins)
    If Worksheets("nom de ma feuille").Cells(i, 10) = empty Then ' (on peut rêver)
    If Worksheets("nom de ma feuille").Cells(i, 10) Is Empty Then ' (toujours pas)
    Merci d'avance pour vos réponse!

  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
    Bonjour Nakou, bienvenue sur le forum
    Ton code est correct mais je soupçonne "autre chose" : Dans ces lignes
    If Worksheets("nom de ma feuille").Cells(i, 10) = "" Then
    ActiveSheet.Cells(i + 1, 10).Select
    si tu es dans une boucle où tu incrémentes i, à i + 1 tu reviens sur la même ligne.
    Pour qu'on puisse t'aider tu devrais nous mettre la boucle complète.
    A+

  3. #3
    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
    Par défaut
    Essaie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsEmpty(Worksheets("nom de ma feuille").Cells(i, 10)) Then
    Et si "ça ne marche pas", c'est que la cellule n'est pas vide.
    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!

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Par défaut
    Sinon tu peux faire avec une boucle...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    range("xx").select
    do while activecell <> ""
    selection.offset(1,0)
    loop

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    Ton mode de programmation ressemble à mes habitudes, aussi je te propose le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
     
        For i = 1 To 1000       ' Limite à adapter à tes besoins
     
     
        If Worksheets("nom de ma feuille").Cells(i, 10) = "" Then
            ' Mettre ici les traitements liés au cas cellule vide
     
        Else
             ' Mettre ici les traitements liés au cas cellule occupée
     
        End If
     
    End Sub

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Par défaut
    Merci a tous pour vos réponses, et désolé pour le délai de la mienne mais j'habite à l'autre bout du monde. J'ai un peu de mal avec les décalages horaires!!

    Pour vos solutions:
    -celle d'Alain Tech ne marche pas
    -celle de Jojo 95 me dit qu'il attend un = au niveau de selection.offset (1,0)
    -celle de PPz78 ne marche pas non plus.

    Je me doute que le problème vient de chez moi, donc je vais essayer d'etre plus claire dans mes lignes de 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
    Sub MiseEnFormeBase()
     
      Dim ligne_fin As Variant
      ligne_fin = Worksheets("xx").Range("J14").End(xlDown).Address
      ligne_fin = Worksheets("xx").Range(ligne_fin).Row
     
      Dim i As Integer
     
      For i = 14 To ligne_fin
     
        Range("J" & i).Select
     
        If Worksheets("xx").Cells(i, 10) = "" Then
            ActiveSheet.Cells(i + 1, 10).Select
        End If
     
        If Worksheets("xx").Cells(i, 10) = 100 Then
            With Selection.Interior
                .ColorIndex = 3
                .Pattern = xlSolid
            End With
        End If
     
    (... continue avec l'attribution de couleur selon la valeur de la cellule...)
     
     Next i
     
    End Sub
    Qu'en pensez vous?

    Merci bien!!

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

Discussions similaires

  1. [XL-2010] macro pour afficher le contenu des lignes des cellules vides
    Par BUX07 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/08/2012, 15h48
  2. [AC-2003] Saut de ligne dans cellule spreadsheet 11
    Par User dans le forum IHM
    Réponses: 12
    Dernier message: 26/07/2009, 05h09
  3. Saut de ligne dans cellule Excel
    Par plsavary dans le forum Général Java
    Réponses: 1
    Dernier message: 05/11/2008, 15h08
  4. Macro renvoi à la ligne automatique cellules fusionnées
    Par Couettecouette dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 18/10/2007, 11h08
  5. Export vers Excel et saut de ligne dans cellule
    Par sbeu dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/08/2004, 15h53

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