Supprimer les cellules vides d'une colonne et trier les éléments semblables entr

CH4t Messages postés 8 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 26 novembre 2008 - 26 nov. 2008 à 11:29
CH4t Messages postés 8 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 26 novembre 2008 - 26 nov. 2008 à 16:12
Bonjour,

Le problème est explicité dans le titre du post :)

Comment supprimer les cellules vides d'une selection sur excel ?

:)

Sinon je reviens sur un autre sujet car apparement personne n'a pu me donner entière satisaction ( Je remercie cependant Felmus 00 qui m'a concocté un code VBA mais qui ne va pas jusqu'au bout ): )
Explication du Problème :

Deux colonnes : A qui contient 1000 lignes et B qui contient 8000 lignes.
Dans A j'ai des noms d'entreprise : VIVENDI, BOUYGUES, etc... ce sont les sociétés côtées.
Dans B j'ai ma séléction d'entreprises de mon propres fichier : 8000 lignes et dans ces 8000 j'aimerai enlevées les entreprises qui aparaissent dans la colonne A ( je veux en sommes enlever les entreprises cotées de ma colonne B )
Le problème est que les désignations des entreprises diffèrent lègerement entre le fichier des entreprises cotées et le mien. EXEMPLE : TOTAL SA ( colonne A) et TOTAL ( colonne B ) , j'aimerai que TOTAL soit supprimé et reconnu comme semblable à TOTAL SA ( en résumé, trouvé toute les racines de loin ou de près )
Et y'en a un paquet ( PEUGEOT SA, et PEUGEOT, SANOFI AVENTIS et SANOFI-AVENTIS etc...

Réussirez vous ?

( Je suis très mauvais en VBA, mais je peux rester a disposition par mail pour que je puisse vous faire parvenir le fichier si vous voulez incrémenter un code )

Merci beaucoup

6 réponses

userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 4 février 2011
26 nov. 2008 à 12:57
Hello,

Le code pour supprimer une cellule est le suivant : Selection.Delete Shift:=xlUp .
Ce dernier supprime la cellule selectionnée et décale vers le haut les autres cellule.
Pour ton autre pb, mes petites connaissances en VB me prendraient un temps inconsidérable à le résoudre (cf la soulution initialement proposée : les filtres automatique + de l'huile de coude).

BR
USERRRQI115
Simple user
Great brain
0
CH4t Messages postés 8 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 26 novembre 2008
26 nov. 2008 à 13:13
D'accord et je mets où cette fonction?

J'incrémente celle ci dans l'éditor ?

( Vraiment désolé pour mon très faible niveau )

Merci :)
0
lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009
26 nov. 2008 à 13:58
Bonjour,
Je veux bien comprendre que l'on début et que l'on ait du mal, mais il faut faire un peu de boulot aussi.
Pour ton deuxieme problème fait quelques recherche sur la fonction instr()
Maintenant un code tout cuit à quoi ca va t'avancer? Crois tu que tu vas progresser si on fait les choses à ta place?
La fonction instr() est une piste à toi de créer ton code et nous le soumettre si tu ne trouve pas une éventuelle erreur.
Bon courage et surtout bon coding!

S.L.B.
<hr />
0
CH4t Messages postés 8 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 26 novembre 2008
26 nov. 2008 à 14:07
Hum.

C'est pour une tâche professionnel d'où le fait que je m'en remet à vos mains.
Je n'étudie absolument pas le VBA et je viens ici parce que je sais ( et merci encore Claude ;)) que certaines personnes comprennent que d'autre personne ont besoin de vos connaissance pour résoudre des problèmes professionnels.

Les informaticiens de ma société ne savent pas faire ( spé networks ).

Mais je comprends.

Merci pour tout.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
CH4t Messages postés 8 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 26 novembre 2008
26 nov. 2008 à 16:12
J'ai pu définir avec l'aide d'un programmeur ce code :

Sub macr()
Option Explicit
Dim nbLignesCol1 As Long    ' nombre de lignes dans la colonne 1
Dim nbLignesCol2 As Long    ' nombre de lignes dans la colonne 2
Dim I As Long               'variable d'incrémentation sur la colonne 1
Dim J As Long               'variable d'incrémentation sur la colonne 2
Dim K As Long               'variable d'incrémentation sur les colonnes 3 et 4
Dim message  As Integer     'variable de retour réponse


Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 18/11/2008
'


    'pour ne pas raffraichir l'affichage pendant la macro
    Application.ScreenUpdating = False
    'on donne le numéro de la premiere ligne où on va écrire les doublons
    K = 2
    ' positionne la selection sur la premiere cellule en haut à gauche du tableau
    Range("A1").Select
    'détermine le nombre de ligne du fichier pour la colonne A
    nbLignesCol1 = Columns("A:A").Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
    'détermine le nombre de ligne du fichier pour la colonne A
    nbLignesCol2 = Columns("B:B").Find("*", Range("B1"), , , xlByRows, xlPrevious).Row
   
    For J = 2 To nbLignesCol2       'boucle dans la colonne 2
        'pour redonner la main au Pc dans les longues opérations
        DoEvents
        ' si la cellule de la colonne 2 n'est pas vide
        If Cells(J, 2).Text <> "" Then
            For I = 2 To nbLignesCol1   'boucle dans la colonne 2
                ' si la cellule de la colonne 1 n'est pas vide
                If Cells(I, 1).Text <> "" Then
                    'si le texte la cellule de la colonne 1  contient le texte de la colonne 2
                    If InStr(Cells(I, 1).Text, Cells(J, 2).Text) <> 0 Then
                        'on copie la cellule de la colonne 1 en colonne 3                        Cells(K, 3) "cellule A" & I & " " & Cells(I, 1)
                        'on copie la cellule de la colonne 2 en colonne 4                        Cells(K, 4) "cellule B" & J & " " & Cells(J, 2)
                        'affiche un message demandant si on veut effacer
                        message = MsgBox(Cells(K, 3).Text & Chr(10) & Cells(K, 4) & Chr(10) _
                        & "effacer ?", vbYesNoCancel)
                        'si la réponse est oui on efface la cellule de la colonne 2
                        If message = vbYes Then
                            Cells(J, 2) = ""
                            Exit For
                        End If
                        'si la réponse est annuler on quitte la macro
                        If message = vbCancel Then GoTo fin
                        'on incrémente la ligne des colonnes 3 et 4
                        K = K + 1
                    End If
                End If
            Next I
        End If
    Next J
fin:
    'pour raffraichir l'affichage
    Application.ScreenUpdating = True
End Sub








Le problème est que je veux effacer les éléments de la colonne 1.

J'ai essayer donc d'inverser les valeurs mais je ne suis pas sûr d'être dans le vrai.

Par ailleurs j'ai testé ce code cependant j'ai l'impression qu'il ne marche pas pour toute les lignes .
0
CH4t Messages postés 8 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 26 novembre 2008
26 nov. 2008 à 16:12
J'ai pu définir avec l'aide d'un programmeur ce code :

Sub macr()
Option Explicit
Dim nbLignesCol1 As Long    ' nombre de lignes dans la colonne 1
Dim nbLignesCol2 As Long    ' nombre de lignes dans la colonne 2
Dim I As Long               'variable d'incrémentation sur la colonne 1
Dim J As Long               'variable d'incrémentation sur la colonne 2
Dim K As Long               'variable d'incrémentation sur les colonnes 3 et 4
Dim message  As Integer     'variable de retour réponse


Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 18/11/2008
'


    'pour ne pas raffraichir l'affichage pendant la macro
    Application.ScreenUpdating = False
    'on donne le numéro de la premiere ligne où on va écrire les doublons
    K = 2
    ' positionne la selection sur la premiere cellule en haut à gauche du tableau
    Range("A1").Select
    'détermine le nombre de ligne du fichier pour la colonne A
    nbLignesCol1 = Columns("A:A").Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
    'détermine le nombre de ligne du fichier pour la colonne A
    nbLignesCol2 = Columns("B:B").Find("*", Range("B1"), , , xlByRows, xlPrevious).Row
   
    For J = 2 To nbLignesCol2       'boucle dans la colonne 2
        'pour redonner la main au Pc dans les longues opérations
        DoEvents
        ' si la cellule de la colonne 2 n'est pas vide
        If Cells(J, 2).Text <> "" Then
            For I = 2 To nbLignesCol1   'boucle dans la colonne 2
                ' si la cellule de la colonne 1 n'est pas vide
                If Cells(I, 1).Text <> "" Then
                    'si le texte la cellule de la colonne 1  contient le texte de la colonne 2
                    If InStr(Cells(I, 1).Text, Cells(J, 2).Text) <> 0 Then
                        'on copie la cellule de la colonne 1 en colonne 3                        Cells(K, 3) "cellule A" & I & " " & Cells(I, 1)
                        'on copie la cellule de la colonne 2 en colonne 4                        Cells(K, 4) "cellule B" & J & " " & Cells(J, 2)
                        'affiche un message demandant si on veut effacer
                        message = MsgBox(Cells(K, 3).Text & Chr(10) & Cells(K, 4) & Chr(10) _
                        & "effacer ?", vbYesNoCancel)
                        'si la réponse est oui on efface la cellule de la colonne 2
                        If message = vbYes Then
                            Cells(J, 2) = ""
                            Exit For
                        End If
                        'si la réponse est annuler on quitte la macro
                        If message = vbCancel Then GoTo fin
                        'on incrémente la ligne des colonnes 3 et 4
                        K = K + 1
                    End If
                End If
            Next I
        End If
    Next J
fin:
    'pour raffraichir l'affichage
    Application.ScreenUpdating = True
End Sub








Le problème est que je veux effacer les éléments de la colonne 1.

J'ai essayer donc d'inverser les valeurs mais je ne suis pas sûr d'être dans le vrai.

Par ailleurs j'ai testé ce code cependant j'ai l'impression qu'il ne marche pas pour toute les lignes .
0
Rejoignez-nous