XL 2010 Propriété "SkipBlanks:=true" lors d'un copier-coller ne fonctionne pas

g.milano

XLDnaute Junior
Bonjour,

Je voudrais utiliser le SkipBlanks pour récupérer des données sans cellules vides (plutôt que de faire une boucle) mais cela ne fonctionne pas. Apres quelques tests, j'en arrive au fait que c'est bien ce paramètre qui ne semble pas fonctionner. Malgré des recherches sur le net, j'ai rien trouvé de probant (les sujets étant souvent noyés dans des codes avec des problèmes annexes).

Pour faire simple :
1) je prends un classeur vierge (dans un excel neuf tout propre)
2) je rentre un nombre en A1, A3 et A5
3) j’exécute un code simple
VB:
ActiveSheet.Range("A1:A5").Copy
ActiveSheet.Range("C1").PasteSpecial SkipBlanks:=True
4) Et a mon grand désarroi, j'ai le même résultat ; c'est-à-dire que les cellules vides n'ont pas été supprimées lors du collage.

Pourriez-vous m'expliquer comment faire ?
Merci pour votre aide.
 
Solution
Bonjour g.milano

Je viens de tester ton code et pour préciser la fonction de SkipBlanks:=True, cela ne colle pas sur la destination, les cellules vides dans la plage d'origine. Fais un test en remplissant les cellules C1:C5 et tu verras le résultat.
Je ne vois pas comment faire autrement que de passer par une ou plusieur(s) boucle(s) pour repondre a ta demande..

Fred0o

XLDnaute Barbatruc
Bonjour g.milano

Je viens de tester ton code et pour préciser la fonction de SkipBlanks:=True, cela ne colle pas sur la destination, les cellules vides dans la plage d'origine. Fais un test en remplissant les cellules C1:C5 et tu verras le résultat.
Je ne vois pas comment faire autrement que de passer par une ou plusieur(s) boucle(s) pour repondre a ta demande..
 

g.milano

XLDnaute Junior
Fallait le comprendre comme ça alors ! En lisant la description, je croyais que le skip du collage des cellules vides les faisait disparaître... Dommage.

J'en suis pour un joli Columns("C").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp après le collage ; ce sera plus light qu'une boucle sur la source (^^)b

Merci pour ton aide.
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, g.milano, Fred0o

Une façon de faire (qui fonctionne sur l'exemple cité)
(A tester en situation "réelle")
VB:
Sub Tests()
Dim r As Range: Set r = Range("A1:A5")
[A1] = "=ROW()": [A3] = 2: [A5] = "ABC"
Union(r.SpecialCells(-4123, 23), r.SpecialCells(2, 23)).Copy [C5]
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 333
Membres
111 104
dernier inscrit
JEMADA