Aide pour la création d'un VBA sous Excel2010
Résolu
aurely
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
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 ;)
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:
- Aide pour la création d'un VBA sous Excel2010
- Creation compte gmail - Guide
- Création site web - Guide
- Création d'un compte google - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Creation compte vinted - Guide
1 réponse
Bonjour,
Ca aurait été mieux pour travailler sur ton code si tu avais déposé un fichier exemple.
Voici comment j'aurai fait :
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
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
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.
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 ;)
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
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 ;)
Et poste plutôt dans Bureautique ou Programmation (si vba)
Bonne journée à toi aussi :-)
eric