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:)
A voir également:

2 réponses

melanie1324 Messages postés 1561 Statut Membre 155
 
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 1561 Statut Membre 155
 
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 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
melanie1324 Messages postés 1561 Statut Membre 155
 
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 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
melanie1324 Messages postés 1561 Statut Membre 155
 
mets ton fichier sur cjoint.com
0
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
JANGO5 Messages postés 98 Statut Membre 1
 
On ne peut pas combiner les deux macros ?
0
melanie1324 Messages postés 1561 Statut Membre 155
 
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
WeaponEDGE
 
Si mais dans ce cas il faut copier les données sur une autre feuille.
0