Aide pour la création d'un VBA sous Excel2010

Résolu/Fermé
aurely - 4 avril 2012 à 12:51
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 5 avril 2012 à 17:59
Bonjour,

Je viens à vous pour obtenir de l'aide concernant le VBA.

Pour que vous puissiez me comprendre au mieux, voici une briéve mise en situation.
Mon tableur me sert à suivre mes contacts avec mes prospects, donc j'ai tout ce qui concerne leur identité, leur situation etc.... et j'ai également deux colones traitant les relances.
Et dans mes colones L et P j'ai "Résultat de la relance" avec une liste déroulante proposant les trois choix suivants : Acceptation/Refus/A relancer de nouveau.
Avec le VBA je souhaite couper toutes les lignes où il est inscrit "Refus" dans les cases L et P pour les copier dans une feuille prévue à cet effet (feuille se trouvant dans le même classeur)

Pour l'instant mon code ressemble à cela :

Sub couper_coller()

Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long

Sheets("Refus").Activate ' feuille de destination

Col = "L" ' colonne de la donnée non vide à tester
NumLig = 1
With Sheets("Feuil1") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 2 To NbrLig
If .Cells(Lig, Col).Value <> "" Then
.Cells(Lig, Col).EntireRow.Cut
NumLig = NumLig + 1
Cells(NumLig, 1).Select
ActiveSheet.Paste
End If
Next
End With

End Sub


Vous l'aurez compris je ne suis pas une experte et mon code est loin d'être complet, je rencontre donc plusieurs difficultés.
Premiérement, mon code ne traîte que la colonne "L" est-ce que l'on peut traiter les colonnes "L" et "P" dans le même code ou faut-il en créer deux ???
Deuxiémement, ce code ne me supprime pas les lignes de mon tableur mais seulement le contenu !!!
Et enfin, je ne sais pas comment inscrire que je veux couper seulement les lignes où il est inscrit "Refus" et du coup ce code me déplace tout !!!

Merci d'avance aux plus courageux qui prendront le temps de lire mon roman et d'y répondre dans l'idéal ;)

A voir également:

1 réponse

eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
5 avril 2012 à 08:18
Bonjour,

Ca aurait été mieux pour travailler sur ton code si tu avais déposé un fichier exemple.

Voici comment j'aurai fait :
Sub refus()
    Dim lig As Long, shDest As Worksheet
    Set shDest = Worksheets("Refus")
    shDest.Cells.Delete 'nettoyer la feuille
    Rows(1).Copy Destination:=shDest.Rows(1)  ' copier ligne de titres
    For lig = [A65536].End(xlUp).Row To 2 Step -1
        If LCase(Cells(lig, 12)) = "refus" Or LCase(Cells(lig, 16)) = "refus" Then
            Rows(lig).Copy Destination:=shDest.Rows(shDest.[A65536].End(xlUp).Row + 1)
            Rows(lig).Delete
        End If
    Next lig
End Sub

Comme tu veux supprimer la ligne copiée il faut faire la boucle à l'envers. Si c'est vraiment genant on peut faire autrement avec qcq lignes en plus.

exemple

eric
0
Merci Beaucoup Eric, je vais essayer avec ce que tu m'as donné et je te tiens au courant mais vraiment merci d'avoir pris le temps de te pencher sur mon problème.
Oui j'aurais pu mettre un fichier exemple mais c'est la premiére fois que je me sers de forums je ne suis pas vraiment experte en la matiére ;)

Bonne journée.
0
Re,
Alors je viens de tester ton VBA et il marche, enfin un seul probléme lorsque je l'éxecute il me supprime bien toutes les lignes où il est marqué "refus" seulement il n'en colle qu'une dans la feuille prévue a cette effet je ne sais pas ou passent les autres. Si tu as besoin d'un fichier exemple dis le moi et je le mettrais du moins j'essayerais ;)
Encore merci ;)
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
Modifié par eriiic le 5/04/2012 à 10:22
Dans mon fichier exemple joint ça marche pourtant (tu confirmes ?).
Le code est à coller dans la feuille des données, et celle-ci doit être active.

A oui aussi : la colonne A des datas est sensée être complètement remplie, si ce n'est pas le cas remplace par une toujours remplie.

Si toujours pb dépose ton fichier sur cjoint.com et colle ici le lien fourni.

eric
0
Ah d'accord, je n'avais pas mis de dates dans ma colonne vu que c'était pour un essai je n'ai pas pensé qu'il le fallait.
Beh un grand merci pour ton aide en 5minute tu as résolu un problème que je me pose depuis 2 jours !!!

Je te souhaite une bonne journée et peut-être à bientôt je risque sûrement d'avoir besoin d'aide prochainement !!!

Bonne journée Eric ;)
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
Modifié par eriiic le 5/04/2012 à 10:53
N'oublie pas de mettre en résolu alors...
Et poste plutôt dans Bureautique ou Programmation (si vba)
Bonne journée à toi aussi :-)
eric
0