Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/08/2011, 16h54   #1
Invité de passage
 
Homme Benoit
Inscription : mars 2008
Messages : 10
Détails du profil
Informations personnelles :
Nom : Homme Benoit
Âge : 26
Localisation : France

Informations forums :
Inscription : mars 2008
Messages : 10
Points : 2
Points : 2
Par défaut Supprimer les cellules vides d'une plage aléatoire et décaler à gauche

Bonjour à tous,

J'ai un souci avec VBA... J'ai longuement cherché sur des forums mais rien à faire, je ne trouve pas de solution efficace !
Voila, j'ai une plage de données qui est alimentées réguliérement par de nouveaux individus (nouvelle ligne) et de nouveaux résultats (nombre de colonne fixe) ! Les résultats d'examens sont rangés dans les colonnes en fonction de l'âge de l'individu ! Toutefois, il arrive qu'une ou plusieurs colonnes soient vides pour un individu car nous n'avons pas réalisés d'examen à ces âges !
Pour réaliser un certains nombre de calcul, j'ai besoin de supprimer les cellules vides pour chaque ligne...

J'ai réussi à bidouiller ce bout code dont je ne suis pas très fier :
Code :
1
2
3
4
5
6
7
8
9
10
Sheets("Temp").Select
For x = 1 To 10 'Faire tourner la macro 10 fois
    For i = 1 To Sheets("Temp").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
        For k = 1 To 62
            If Cells(i, k) = "" Then
            Cells(i, k).Delete shift:=xlToLeft
            End If
        Next k
    Next i
Next x
Le problème, c'est qu'il me laisse des cellules vides si j'ai plusieurs cellules vides l'une à côté de l'autre donc je dois le relancer un certains nombre de fois ! Et ça marche, je n'ai plus de cellules vides mais le temps d'éxecution est très très très loooooooooonnnnnnnnnng !!! ...il y a 62 colonnes à analyser pour chaque ligne !

Quelqu'un aurait-il un bout de code un peu plus rapide ???

Merci par avance !
ketum88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2011, 17h22   #2
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 398
Points : 14 398
Envoyer un message via Skype™ à Pierre Fauconnier
Salut.

Lorsque tu supprimes des colonnes, tu dois partir de la droite du tableau et te déplacer vers la gauche sinon, la colonne à droite d'une colonne supprimée n'est pas traitée par la boucle => Tu dois relancer.

Le raisonnement est identique si tu supprimais des lignes, et tu dois alors commencer par le bas du tableau

Tu dois donc inverser la boucle sur les colonnes
Code :
For k = 62 to 1 Step -1
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2011, 17h32   #3
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 398
Points : 14 398
Envoyer un message via Skype™ à Pierre Fauconnier
Cela étant dit, je "sens" que tu pourrais améliorer grandement les capacités d'analyse de ton tableau en organisant tes données autrement. Tu auras bien entendu plus de lignes, mais tu pourrais utiliser les outils d'Excel pour ton analyse.

L'idée, puisque tu réalises des examens, est de stocker des données... d'examen.

Donc, tu pourrais réduire le nombre de tes colonnes et traiter un examen par ligne. Tu peux alors utiliser les outils d'Excel tels que somme conditionnelle, tableau croisé dynamique, etc...

__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 18h36   #4
Invité de passage
 
Homme Benoit
Inscription : mars 2008
Messages : 10
Détails du profil
Informations personnelles :
Nom : Homme Benoit
Âge : 26
Localisation : France

Informations forums :
Inscription : mars 2008
Messages : 10
Points : 2
Points : 2
Merci, c'est ce que je cherchais... Le pire c'est que je le savais mais j'avais oublié !! Et si je n'ai pas fais autrement c'est que je n'ai pas trop le choix ! Crois moi, je me serais bien passé des macros...

Merci encore...
ketum88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h12.


 
 
 
 
Partenaires

Hébergement Web