Macro saut de ligne si vide

Résolu
JANGO5 Messages postés 98 Statut Membre -  
melanie1324 Messages postés 1561 Statut Membre -
Bonjour,

Ma colonne A cotient des valeurs et des vides
Sur ma colonne B je veux reprendre ces valeurs dans l'ordre mais en sutant un eligne à chaque fois ou il ya un vide dans la colonne A
en gros je veux avoir une colonne B sans vides (B=A sans les vides)
ça urge :/
Mercii:)

2 réponses

  1. melanie1324 Messages postés 1561 Statut Membre 156
     
    Bonjour,

    Pas besoin de macro, suit les étapes :

    tu mets un filtre de ta colonne A ou tu sélectionnes tout sauf les vides.
    Tu copies toutes les cellules.
    Tu filtre de nouveau la colonne A pour avoir tout
    tu te mets dans la colonne B et tu colles

    Normalement, tu as ta colonne A sans les vides.
    1
    1. melanie1324 Messages postés 1561 Statut Membre 156
       
      si tu tiens à avoir une macro :

      sub colAsansvide ()

      a=2 'la macro commence à la ligne 2 de la colonne A

      b=2'la macro collera à partir d ela ligne 2 de la colonne B

      do while a = 60000 'la macro tournera jusqu'à la 60000 lignes
      if cells(a,1) <>"" then 'si la cellule de la ligne a et colonne 1 est non vide alors
      cells(b,2) = cells(a,1) 'la cellule de la ligne b colonne 2 = cellule de la ligne a colonne 1
      b=b+1 'la prochaine copie se fera sur la ligne suivante
      end if 'fin du si

      a=a+1 'on passe à la ligne suivante de la colonne A
      loop 'permet de retourner à do while
      end sub
      0
    2. JANGO5 Messages postés 98 Statut Membre 1
       
      Bonjour,
      Au fait oui je tiens à la macro
      donc dans mon cas ça donne ça :

      Sub colAsansvide()

      AQ = 2 'la macro commence à la ligne 2 de la colonne AQ

      AR = 2 'la macro collera à partir de la ligne 2 de la colonne AR

      Do While A = 60000 'la macro tournera jusqu'à la 60000 lignes
      If Cells(AQ, 44) <> "" Then 'si la cellule de la ligne AQ et colonne 44 est non vide alors
      Cells(AR, 45) = Cells(AQ, 44) 'la cellule de la ligne AR colonne 45 = cellule de la ligne AQ colonne 44
      AR = AR + 1 'la prochaine copie se fera sur la ligne suivante
      End If

      AQ = AQ + 1 'on passe à la ligne suivante de la colonne AQ
      Loop

      End Sub

      j'ai mis ça dans un module et quand j'execute il ne se passe rien ?!!!!
      Help!
      0
    3. melanie1324 Messages postés 1561 Statut Membre 156
       
      non c'est pas bon, voici le bon code :

      Sub colAsansvide()

      AQ = 2 'la macro commence à la ligne 2 de la colonne AQ

      AR = 2 'la macro collera à partir de la ligne 2 de la colonne AR

      Do While A = 60000 'la macro tournera jusqu'à la 60000 lignes
      If Cells(AQ, 43) <> "" Then 'si la cellule de la ligne AQ et colonne 43 est non vide alors
      Cells(AR, 44) = Cells(AQ, 43) 'la cellule de la ligne AR colonne 44 = cellule de la ligne AQ colonne 44
      AR = AR + 1 'la prochaine copie se fera sur la ligne suivante
      End If

      AQ = AQ + 1 'on passe à la ligne suivante de la colonne AQ
      Loop

      End Sub
      0
    4. JANGO5 Messages postés 98 Statut Membre 1
       
      Merci pour la correction , mais ça ne marche toujours pas .
      Au fait je met le code sur un module VBA je met un bouton sur la feuille qui m'interesse et après j'affecte la macro au bouton et quand je clique deessus rien ne marche ;/
      c peut etre pas la bonne procédure ???!
      Merciii
      0
    5. melanie1324 Messages postés 1561 Statut Membre 156
       
      mets ton fichier sur cjoint.com
      0
  2. WeaponEDGE
     
    Bonjour,

    Voilà le cézame pour transférer tes données sur la colonne B

    Sub Transfert()
    Nb_Lgn = Cells(Rows.Count, 1).End(xlUp).Row

    x = 1
    For i = 1 To Nb_Lgn
    Info_Cell = Cells(i, 1)

    If Info_Cell <> "" Then
    Cells(x, 2) = Cells(i, 1)
    x = x + 1
    End If
    Next i
    End Sub


    Après si tu souhaites supprimer les lignes pour lesquels la cellule A est vide alors tu peux utiliser la macro ci dessous.

    Sub Sup_Blank()
    Nb_Lgn = Cells(Rows.Count, 1).End(xlUp).Row

    For i = Nb_Lgn To 1 Step -1
    Info_Cell = Cells(i, 1)

    If Info_Cell = "" Then
    Rows(i).Delete
    End If
    Next i
    End Sub
    0
    1. JANGO5 Messages postés 98 Statut Membre 1
       
      On ne peut pas combiner les deux macros ?
      0
    2. melanie1324 Messages postés 1561 Statut Membre 156
       
      si tu peux combiner de cette manière :

      Sub Transfert()
      Nb_Lgn = Cells(Rows.Count, 1).End(xlUp).Row

      x = 1
      For i = 1 To Nb_Lgn
      Info_Cell = Cells(i, 1)

      If Info_Cell <> "" Then
      Cells(x, 2) = Cells(i, 1)
      x = x + 1
      else
      Rows(i).Delete
      End If
      Next i
      End Sub
      0
    3. WeaponEDGE
       
      Si mais dans ce cas il faut copier les données sur une autre feuille.
      0