Macro saut de ligne si vide

Résolu/Fermé
JANGO5 Messages postés 92 Date d'inscription mardi 18 juin 2013 Statut Membre Dernière intervention 13 août 2014 - 22 juil. 2013 à 18:37
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 - 23 juil. 2013 à 15:30
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

melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 153
23 juil. 2013 à 09:24
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
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 153
23 juil. 2013 à 09:28
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
JANGO5 Messages postés 92 Date d'inscription mardi 18 juin 2013 Statut Membre Dernière intervention 13 août 2014 1
23 juil. 2013 à 11:04
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
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 153
23 juil. 2013 à 11:07
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
JANGO5 Messages postés 92 Date d'inscription mardi 18 juin 2013 Statut Membre Dernière intervention 13 août 2014 1
23 juil. 2013 à 11:11
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
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 153
23 juil. 2013 à 12:53
mets ton fichier sur cjoint.com
0
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
JANGO5 Messages postés 92 Date d'inscription mardi 18 juin 2013 Statut Membre Dernière intervention 13 août 2014 1
23 juil. 2013 à 11:46
On ne peut pas combiner les deux macros ?
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 153
23 juil. 2013 à 13:11
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
Si mais dans ce cas il faut copier les données sur une autre feuille.
0