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 27/10/2011, 11h57   #1
Nouveau Membre du Club
 
Inscription : avril 2010
Messages : 150
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 150
Points : 25
Points : 25
Par défaut Suppression de ligne vide

Bonjour,

J'ai une macro qui reporte des chiffres en fonction d'un Vlookup.
Les cases ne contenant pas de données s'affichent #N/A. J'ai donc ajouter dans ma formule un
Citation:
=if(iserror(vlookup....
Tout cela fonctionne parfaitement.

Mais parfois des lignes entières ne contiennent aucune données. Donc j'aimerai quelles se delete automatiquement.

Colonne A :

LIGNE 1 :CRAYON
LIGNE 2 :TAILLE CRAYON
LIGNE 3: STYLO
LIGNE 4: GOMME......

COLONNE B CLASSE 1
COLONNE C CLASSE 2
COLONNE D CLASSE 3

Donc imaginons que pour la classe 1,2 et 3 on es pas besoin de crayon, je voudrais que la ligne se supprime au résultat. Enfin de delete des lignes.

Comment pouvez-vous m'aider ? Avec un moteur ?

Merci d'avance

Bien à vous
korni184 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 12h43   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Si "Ligne est le numéro de ligne :

Code :
1
2
'Réf.111027.xlsm korni184
If Application.CountA(Cells(Ligne, 2).Resize(, 3)) = 0 Then Rows(Ligne).Delete
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/10/2011, 12h54   #3
Membre Expert
 
Avatar de Jean-Pierre49
 
Homme J-Pierre Catherine
Conception Calcul
Inscription : juillet 2007
Messages : 659
Détails du profil
Informations personnelles :
Nom : Homme J-Pierre Catherine
Âge : 57
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conception Calcul
Secteur : Industrie

Informations forums :
Inscription : juillet 2007
Messages : 659
Points : 1 856
Points : 1 856
Bonjour

une autre solution (toutes versions)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
                    Dim Plage                   As Range
                    Dim Cell                    As Range
                    Dim Derlign                 As Long
                    Dim CompA                   As Long
                    Dim CompB                   As Byte
                    Dim ind                     As Byte
 
    Derlign = Range("A" & Rows.Count).End(xlUp).Row
    Set Plage = Range("A1:H" & Derlign) 'déclaration du tableau
 
    Application.ScreenUpdating = False ' on fige l'ecran
    For CompA = Derlign To 2 Step -1 ' on bouche sur le tableau de bas en haut
        For CompB = 2 To 4 ' on balai les Colonnes
            If Cells(CompA, CompB) = "" Then ind = ind + 1 ' On compte les cellules vides
        Next CompB
 
        If ind = 3 Then ' Si le nombre de cellule vides = 3
            Plage.Rows(CompA).EntireRow.Delete ' On supprime la ligne
            ind = 0
        End If
    Next CompA
    Application.ScreenUpdating = True
cordialement
__________________
Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------
Jean-Pierre49 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 27/10/2011, 15h49   #4
Nouveau Membre du Club
 
Inscription : avril 2010
Messages : 150
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 150
Points : 25
Points : 25
Par défaut Problème

Je viens de faire plusieurs test et malheureusement cela ne fonctionne pas...
Je suis entrain de chercher :

Mon tableau ressemble à cela :

1               PREMIERE ANNEE                   DEUXIEME ANNEE	
2           CLASSE1 CLASSE2 CLASSE3          CLASSE1 CLASSE2 CLASSE3
3 CRAYON               1       2                3       2       2
4 STYLO							
5 GOMME        2       3                        4       5
6 CISEAU                       2                2               1
7 REGLE        4               4                        4	
				
    A          B       C       D       E        F       G       H
Je vous ai mis les colonnes et les lignes. Comme vous pouvez le remarquer la ligne 4 est vide, donc je voudrais via un moteur faire en sorte qu'elle se supprime.

Merci d'avance pour votre aide
korni184 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 15h51   #5
Nouveau Membre du Club
 
Inscription : avril 2010
Messages : 150
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 150
Points : 25
Points : 25
Je viens de remarquer que le forum, n'a pas bien pris en compte mon tableau.

Donc je ne sais pas trop comment faire... j'ai un fichier excel, mais on ne peut pas le joindre. Il y a t-il une solution ?
korni184 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 15h58   #6
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Code :
1
2
3
4
5
'Réf.111027.xlsm korni184
Dim Ligne As Long
For Ligne = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
    If Application.CountA(Rows(Ligne)) = 1 Then Rows(Ligne).Delete
Next Ligne
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/10/2011, 15h58   #7
Membre Expert
 
Avatar de Jean-Pierre49
 
Homme J-Pierre Catherine
Conception Calcul
Inscription : juillet 2007
Messages : 659
Détails du profil
Informations personnelles :
Nom : Homme J-Pierre Catherine
Âge : 57
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conception Calcul
Secteur : Industrie

Informations forums :
Inscription : juillet 2007
Messages : 659
Points : 1 856
Points : 1 856
Test avec le code corrigé et adapté

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
                    Dim Plage                   As Range
                    Dim Cell                    As Range
                    Dim Derlign                 As Long
                    Dim CompA                   As Long
                    Dim CompB                   As Byte
                    Dim ind                     As Byte
 
    Derlign = Range("A" & Rows.Count).End(xlUp).Row
    Set Plage = Range("A1:H" & Derlign) 'déclaration du tableau
 
    Application.ScreenUpdating = False ' on fige l'ecran
    For CompA = Derlign To 2 Step -1 ' on bouche sur le tableau de bas en haut
        For CompB = 2 To 6 ' on balai les Colonnes
            If Cells(CompA, CompB) = "" Then ind = ind + 1 ' On compte les cellules vides
        Next CompB
 
        If ind = 5 Then ' Si le nombre de cellule vides = 5
            Plage.Rows(CompA).EntireRow.Delete ' On supprime la ligne
        End If
        ind = 0
    Next CompA
    Application.ScreenUpdating = True
Cordialement
__________________
Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------
Jean-Pierre49 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 27/10/2011, 16h27   #8
Nouveau Membre du Club
 
Inscription : avril 2010
Messages : 150
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 150
Points : 25
Points : 25
Je viens de tester la formule
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
                   Dim Plage                   As Range
                    Dim Cell                    As Range
                    Dim Derlign                 As Long
                    Dim CompA                   As Long
                    Dim CompB                   As Byte
                    Dim ind                     As Byte
 
    Derlign = Range("A" & Rows.Count).End(xlUp).Row
    Set Plage = Range("A1:H" & Derlign) 'déclaration du tableau
 
    Application.ScreenUpdating = False ' on fige l'ecran
    For CompA = Derlign To 2 Step -1 ' on bouche sur le tableau de bas en haut
        For CompB = 2 To 6 ' on balai les Colonnes
            If Cells(CompA, CompB) = "" Then ind = ind + 1 ' On compte les cellules vides
        Next CompB
 
        If ind = 5 Then ' Si le nombre de cellule vides = 5
            Plage.Rows(CompA).EntireRow.Delete ' On supprime la ligne
        End If
        ind = 0
    Next CompA
    Application.ScreenUpdating = True
Ca fonctionne, juste une indication.

J'ai 8 colonnes, A(Les fournitures) et BCD les classes, E une colonne vide et FGH les autres classes....

Je vois au dessus cellules vides : 5, sa ne serait pas plutôt 7 ? en comptant la colonne de séparation (E)

Et pour balayer les colonnes 2 to 7 ?
korni184 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 16h34   #9
Membre Expert
 
Avatar de Jean-Pierre49
 
Homme J-Pierre Catherine
Conception Calcul
Inscription : juillet 2007
Messages : 659
Détails du profil
Informations personnelles :
Nom : Homme J-Pierre Catherine
Âge : 57
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conception Calcul
Secteur : Industrie

Informations forums :
Inscription : juillet 2007
Messages : 659
Points : 1 856
Points : 1 856
Citation:
Et pour balayer les colonnes 2 to 7 ?
For CompB = 2 To 8 ' on balai les Colonnes


Citation:
Je vois au dessus cellules vides : 5, sa ne serait pas plutôt 7 ? en comptant la colonne de séparation (E)
exact


Cordialement
__________________
Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------
Jean-Pierre49 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/10/2011, 16h52   #10
Nouveau Membre du Club
 
Inscription : avril 2010
Messages : 150
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 150
Points : 25
Points : 25
merci pour la qualité de vos réponses.

Bàv
korni184 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 05h41.


 
 
 
 
Partenaires

Hébergement Web