Excel 2007 décaler-supprimer les cellules vides à gauche

Postez ici vos questions et(ou) vos solutions ayant pour thème l'informatique.

Modérateurs: NeoMaHo, Sebastien, Bourrin007

Excel 2007 décaler-supprimer les cellules vides à gauche

Messagede wmichelange le Jeu Mar 13, 2008 8:41 am

Bonjour Sébastien
SVP un petit coup de pouce
Présentation du Pb : j'ai Excel 2007.
Enoncé du Pb :
J'ai une zone de RX3 à TU20 de valeurs issues de formules du
genre(=SI((NE90=$RU$37);GAUCHE(NE91;50);""))qui donnent une cascade alphanumérique de RX3 à TU20 qui est convertie en chiffre (ci-joint 1 extrait sur une ligne :2 1 24 18 1 10 7 8 22 0 14 6 8 9 4 1 6)
Descriptif :Cell RX3 le 2 puis RY4 le 1 puis RZ5 le 24 et SA4 le 18 etc

Il y a une valeur par cellule et soit 1 ou 3 cell par ligne.
Mon travail consiste à regrouper toute cette zone (RX3àTU20) ,à gauche en RX3 ou en RW3 peu importe, sans aucune cellules vides.
La manip : F5- supp.. etc ou supp -decal vers la G...................
ne marche pas!
1)car a) pas de cell correspondantes ..etc
b)ou Excel efface la zone....etc
2)Il y a une macro sur forum Excel download qui fonctionne ligne par ligne ??????
Une macro c'est fait pour mettre le "Turbo" et pas pour jouer la tortue!!!! car elle fait ligne par ligne et cell vide par celle vide ???? vu le nombre de clic .. Ben autant le faire manuellement : je coupe ..je colle.. et je RE et Re...

En conclusion : Y-a-t-il une solution rapide ?
Merci de me le dire car ça peut servir pour tous.
Merci wmichelange
wmichelange
Carotteur
Carotteur
 
Messages: 28
Inscription: Sam Jan 26, 2008 1:12 pm

Re: Excel 2007 décaler-supprimer les cellules vides à gauche

Messagede Sebastien le Jeu Mar 13, 2008 8:57 pm

Salut,

Je pense qu'il y a une solution très simple à tester.
Code: Tout sélectionner
Sub Supprcellulevide()

For i = 1 To 100
   Range("A" & i & ":" & "AY" & i).Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.Delete Shift:=xlToLeft
Next i
End Sub


Commentaires :
For i = 1 To 100 --> Remplace le 100 par le nombre de ligne à traiter
Range("A" & i & ":" & "AY" & i).Select --> Remplace A et AY par les lettres de colonne à traiter.

La macro sélectionne une ligne entière, utilise la fonction Atteindre de Excel, sélectionne les cellules vides, supprimes les cellules vide en décalant les cellules pleines vers la gauche.

Quelques remarques :
La macro retourne une erreur une fois qu'elle est arrivée à la dernière ligne. Pour faire quelque chose de propre, il faudrait ajouter une condition qui arrête la macro lorsqu'une erreur est rencontrée.
Teste là sur un fichier de validation.
Note : la fonction Atteindre de Excel est utilisable à la main en se rendant dans le menu Edition > Atteindre > Cellules.

Pour ce qui est de gagner du temps, ce n'est pas exactement le sens premier de la macro. Oui, elle permet de gagner du temps mais en automatisant un traitement manuel et répétitif. Elle ne permet pas d'exécuter plus rapidement un traitement (au sens utilisation du processeur). Si ta macro doit passer sur 65.000 lignes * 256 colonnes, elle prendra du temps à s'exécuter (et c'est pire avec Excel 2007, voir ci-dessous), mais elle ira toujours plus rapidement que si tu devais passer sur toutes ces lignes manuellement.

Enfin, vu les noms de colonnes que tu cites "RX3 à TU20", tu dois avoir beaucoup de données à traiter. La macro à laquelle tu fais référence s'attend peut-être à trouver un nombre de colonnes allant jusqu'à IV (256 colonnes) comme dans ma version 2000 de Excel et non pas celles de Excel 2007.

Excel avant 2007 : 65 536 lignes, 256 colonnes
Excel 2007 : 1 048 576 lignes, 16 384 colonnes

Donc les données à traiter sont colossales si la macro passe sur toutes les cellules.

Tiens nous au courant.
@+
Image
Avatar de l’utilisateur
Sebastien
Administrateur
Administrateur
 
Messages: 2555
Inscription: Lun Fév 14, 2005 8:17 pm
Localisation: LILLE

Re: Excel 2007 décaler-supprimer les cellules vides à gauche

Messagede wmichelange le Ven Mar 14, 2008 10:25 am

Bonjour Sébastien

Merci de ta réponse et surtout merci pour tes explications qui me sont utiles pour comprendre le fonctionnement des macros qui
je l’avoue me parlent « Javanais ».
Désolé ! mais la macro ne marche pas. Expliq :
Erreur 1004 + pas de cell correspondantes.
De plus dans débogage : « Selection.SpecialCells(xlCellTypeBlanks).Select »
Cette consigne ne lui convient pas.
Je pense que c’est le copy-coller qui ne lui convient pas. Il y a 19 lignes à décaler..à moins que je ne comprennes pas .
La sélection se fait de TX à VU ou RX à TU toujours sur 19 à 20 lignes seulement.
Je te joins la macro qui marche cell/cell :
Sub Décale()

Dim Lig As Long
Lig = ActiveCell.Row
Range("TX" & Lig & ":VU" & Lig).Cut Destination:=Range("TW" & Lig & ":VT" & Lig)
Range("TW" & Lig).Select

End Sub

Mais il faut cliquer sur le bouton autant de fois que de cell vides???? Et tout se décale. ????
Question d’un nul : lors d’une sélection ,Excel se concentre sur la sélection ? ou parcourt toute la feuille ?
Merci de m’accorder de ton temps.
A+
wmichelange
wmichelange
Carotteur
Carotteur
 
Messages: 28
Inscription: Sam Jan 26, 2008 1:12 pm

Re: Excel 2007 décaler-supprimer les cellules vides à gauche

Messagede Sebastien le Ven Mar 14, 2008 7:24 pm

Salut,

je vais reformuler et tu me diras si j'ai bien compris la demande.
  • Tu disposes d'un fichier dans lequel se trouve une plage de données. Cette plage s'étend de la colonne RX3 à TU20
    Question : C'est toujours la même plage ?
  • Le nombre de cellule remplie dans chaque ligne est variable.
  • Le but de la macro est de sélectionner les données allant de RX3 à TU20 et de les regrouper à gauche, la première colonne à remplir étant la RX.

Pour l'erreur 1004, je l'ai aussi mais je n'ai cette erreur qu'une fois que la macro a terminé le tri. Je vais faire quelques essais et tenter de modifier tout ça.
En attendant, dis moi si ce que j'ai décrit au dessus correspond bien à ce que tu recherches à faire

@+
Image
Avatar de l’utilisateur
Sebastien
Administrateur
Administrateur
 
Messages: 2555
Inscription: Lun Fév 14, 2005 8:17 pm
Localisation: LILLE

Re: Excel 2007 décaler-supprimer les cellules vides à gauche

Messagede wmichelange le Sam Mar 15, 2008 12:18 pm

Bonjour Sebastien
Merci de ta réponse
• Cette plage s'étend de la colonne RX3 à TU20? C’est toujours la même plage et elle restera fixe.
• Le nombre de cellule remplie dans chaque ligne est variable. ? oui ! soit 1 valeur ou 2 ou 5 ou 6 etc
• Le but de la macro est de sélectionner les données allant de RX3 à TU20 et de les regrouper à gauche, la première colonne à remplir
étant la RX. ? oui ! si impossible RW qui est libre pour mieux présenter.
• C-à-d les décaler à gauche mais sans tri ..Il faut qu’elle reste dans le même ordre… ainsi :
9 23 1 35 7 9 10 5 2 etc dans chaque ligne
Avec tri ZàA ou AàZ je sais faire.
Merci de te pencher sur ce cas
Pour l'erreur 1004 je l'ai avant le tri donc il n'y a rien qui se passe.
A+
wmichelange
wmichelange
Carotteur
Carotteur
 
Messages: 28
Inscription: Sam Jan 26, 2008 1:12 pm

Re: Excel 2007 décaler-supprimer les cellules vides à gauche

Messagede Sebastien le Lun Mar 17, 2008 10:33 pm

Bonsoir,

je n'ai pas encore eu le temps de me pencher sur la macro. Je pense qu'on va pouvoir trouver quelque chose, j'espère pouvoir faire un retour dans la semaine. Si de ton coté tu as réussi à avancer, n'hésite pas à en faire profiter les lecteurs du forums. ;)

@+
Image
Avatar de l’utilisateur
Sebastien
Administrateur
Administrateur
 
Messages: 2555
Inscription: Lun Fév 14, 2005 8:17 pm
Localisation: LILLE

Re: Excel 2007 décaler-supprimer les cellules vides à gauche

Messagede wmichelange le Mar Mar 18, 2008 4:42 pm

Bonjour Sébastien
Merci de ta réponse.
Hélas tous mes essais se retournent en echecs et rien sur les sites que je connais.
Peut-être qu'Excel ne peut pas???
A+
wmichelange
wmichelange
Carotteur
Carotteur
 
Messages: 28
Inscription: Sam Jan 26, 2008 1:12 pm

Re: Excel 2007 décaler-supprimer les cellules vides à gauche

Messagede Sebastien le Mer Mar 19, 2008 9:22 pm

Salut,

C'est forcement faisable. J'ai refait quelques tests mais cela m'amène une nouvelle question :
On parle de la plage de cellule qui va de RX3 à TU20. Y-a t'il des données après la colonne TU ou bien toutes les colonnes se trouvant à droites de cette plage sont vides ?
Parce que j'arrive à faire quelque chose d'approchant, mais s'il y a d'autres données après TU, cela ne va pas (les données sont décalées vers la gauche).

La macro que j'utilise :
Code: Tout sélectionner
Sub Macro1()
For i = 1 To 20
    Range("C" & i & ":" & "N" & i).Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.Delete Shift:=xlToLeft
Next i
End Sub

Dans l'exemple ci-dessus, la sélection se fait sur la plage C1:N20
C'est bizarre que cette macro ne fonctionne pas chez toi, c'est peut être dû au fait que je fonctionne avec Excel 2000.
Je vais essayer de trouver un autre moyen.
Image
Avatar de l’utilisateur
Sebastien
Administrateur
Administrateur
 
Messages: 2555
Inscription: Lun Fév 14, 2005 8:17 pm
Localisation: LILLE

Re: Excel 2007 décaler-supprimer les cellules vides à gauche

Messagede wmichelange le Jeu Mar 20, 2008 9:53 am

Bonjour Sébastien
Merci de ta macro
Exposition des pb :
TX à VU ou C à N ..pas de pb
La macro si tu copy-colle => Erreur 1004 : Selection.SpecialCells(xlCellTypeBlanks).Select
Si tu tapes à la main sans erreur les chiffres => ça marche
Si lors de ta frappe tu fais une erreur (tu recopies les 3 chiffres et tu colles)=> ça ne décale pas la partie copy-colle et renvoie l’erreur sans indication de debogage.
Le pb reste dans le copy colle des résultats..Il faut une frappe sans faute.
Si tu tries ça marche et dans ce cas comment faire correspondre les candidats (codés 1 à 50) avec les notes qui arrivent selon l’ordre des candidats ? ex le 50 correspond au 3 ,le 12 au 2 ,le 1au 25, le 3 au 19 etc
Les versions Excel ne sont pas coupables...pour moi Excel ne reconnait pas une cell vide si celle-ci est collée.
A+
wmichelange
PS: l'optimiste dit "y a toujours une solution"....Je me pose la question s'il y a en une?.
wmichelange
Carotteur
Carotteur
 
Messages: 28
Inscription: Sam Jan 26, 2008 1:12 pm

Re: Excel 2007 décaler-supprimer les cellules vides à gauche

Messagede wmichelange le Jeu Mar 20, 2008 9:57 am

RE
Excuses!
Rien à droite après TU que des essais(en TX--VU) pour voir mais aucube données.
TV est une colonne vide et à droite plus rien.
wmichelange
wmichelange
Carotteur
Carotteur
 
Messages: 28
Inscription: Sam Jan 26, 2008 1:12 pm

Re: Excel 2007 décaler-supprimer les cellules vides à gauche

Messagede wmichelange le Lun Mar 24, 2008 11:06 am

Bonjour Sébastien
Une question d'un novice en macro Excel :
existe-t-il une autre expression que (Selection.SpecialCells(xlCellTypeBlanks).Select ) ou CellTypeBlank pour indiquer à Excel de décaler?
Après tout une cell vide copiée-collée n'est plus vide pour Excel comment peut-on l'appeler?
Car tout tableau tapé au clavier sans aucune correction répond bien à la macro..alors ? il ne veut pas de CellTypeBlank ! que lui dire?
Merci de ton aide.
A+
wmichelange
wmichelange
Carotteur
Carotteur
 
Messages: 28
Inscription: Sam Jan 26, 2008 1:12 pm

Re: Excel 2007 décaler-supprimer les cellules vides à gauche

Messagede wmichelange le Ven Mar 28, 2008 5:57 pm

Bonjour Sébastien et le forum
à la question peut-on décaler à Gauche des cells => les réponses.
a)Macro1 de Sébastien
Sub Supprcellulevide()
For i = 1 To 100
Range("A" & i & ":" & "AY" & i).Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlToLeft
Next i
End Sub

Cette macro fonctionne très bien en cas de frappes directes au clavier. Elle fonctionne mal ou très mal si on fait copier-coller ou pas du tout si on a des résultats de fonctions .
Exigence :Ne RIEN avoir à droite de la der cell à décaler.....sinon illisible!
B) autre solution réduire ou décaler :
Macro2 de Marco (site VeriTi)
Sub ReduireTableau()
Dim Data As Range, Lig%, Col%
Set Data = Range("b9:ay25")
Application.ScreenUpdating = False
With Data
For Lig = 1 To .Rows.Count
For Col = .Columns.Count To 1 Step -1
If .Cells(Lig, Col) = "" Then .Cells(Lig, Col).Delete shift:=xlToLeft
Next Col
Next Lig
End With
Application.ScreenUpdating = True

End Sub

Cette macro fonctionne très très bien sur Excel 97 2000 2003 et plus lente sur 2007.
Voici ce que je sais et expérimenté.
Restons solidaires. Plus on apprend et plus on découvre qu'on ne sait pas grand chose.
A+
wmichelange.
wmichelange
Carotteur
Carotteur
 
Messages: 28
Inscription: Sam Jan 26, 2008 1:12 pm

Re: Excel 2007 décaler-supprimer les cellules vides à gauche

Messagede Sebastien le Ven Mar 28, 2008 9:41 pm

Bonsoir,

Merci de nous faire un retour, c'est très appréciable de ta part. Cela permet de tester une solution qui fonctionne et d'avoir un exemple concret d'utilisation.
En tous cas, je me resservirai de cet exemple car moi aussi, j'essaie d'apprendre à fabriquer des macros et un exemple de code permet toujours de progresser.
:ouioui:

Merci et @+ sur le forum.
Image
Avatar de l’utilisateur
Sebastien
Administrateur
Administrateur
 
Messages: 2555
Inscription: Lun Fév 14, 2005 8:17 pm
Localisation: LILLE


Retourner vers Forum d'entraide informatique

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

cron