Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion Mprice
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

Mprice

Guest
Bonjour,

J'ai un gros fichier avec plein d'entreprises et informations les concernant.
J'ai créé une colonne "type" pour les trier selon des critères d'importance donc soit 1, soit 2, soit 3.
Maintenant ce que je souhaite faire c'est créer une macro qui renvoient tous les types 1 et 2 dans un autre feuillet.

J'ai découvert aujourd'hui les VBA et pour l'instant j'ai :

Sub copypaste()
If Range("i2") <> 3 Then Range("a2:l2").Select
Selection.Copy
Sheets("Feuil2").Activate
Range("a2:l2").PasteSpecial

End Sub

Le problème maintenant est que je souhaite appliquer celle-ci à tout mon fichier (soit environ 4000 lignes). J'ai lu un cours sur les boucles mais j'avoue que je n'arrive vraiment pas à l'appliquer à mon cas...
Surtout que le fichier est régulièrement mis à jour..

Si quelqu'un peut m'aider? Ou au moins me dire si ce que je veux faire est possible.

Merci d'avance!!

Megan
 
Dernière modification par un modérateur:
Re : Question VBA

Bonjour

avec un extrait du fichier, sans donnée confidentielle, ce serait mieux

a première vue, si on raisonne à la main, il suffit d'utiliser un filtre auto sur ton critère puis de copier coller le résultat

ce serait peut-être suffisant de le faire à la main, sinon, par vba cela doit être jouable
 
Re : Question VBA

Bonjour Mprice et bienvenu, bonjour le forum,

On peut éviter les boucles et passer par un filtre, c'est pas très compliqué à realiser. Mais pour que tu puisses l'appliquer à ton fichier, il nous faudrait un petit exemple reprenant la structure de ton fichier original (nom des onglets, plages nommées, etc...) avec une poignée de données non confidentielles.

[Édition]
Bonjour Éric, on s'est croisé... Je ne sais pas si c'est si nèque que ça mais c'est tellement vrai...
 
Dernière édition:
Re : Question VBA

Jusqu'à la c'est ce que je faisais mais le problème est que je dois aussi faire la même chose pour d'autres colonnes : ex: action (appel,mail)...
Et ça devient assez compliqué.. je pensais que le traitement automatique serait plus facile mais bon ça c'était avant que je découvre en quoi consiste les macros lol!
Merci pour votre réponse!!
 
Re : Question VBA

Re

Bonjour Robert

j'avais hésité avec une autre sentence (pas de Sénèque) néanmoins oh combien applicable dans les pbs excel : "quand le viol est inévitable, détends-toi et profite", mais bon, moins poétique.....
 
Re : Question VBA

Bonjour le fil, bon jour le forum,

Mprice, ce que nous te proposions c'est le code VBA pour faire cela et non pas de le faire manuellement... mais il nous faut toujours un exemple...

[Édition]
Celle-la, Éric est déjà beaucoup moins nèque...
 
Re : Question VBA

Re

un exemple de code basique qui reproduit les opérations manuelles

Code:
Sub Macro1()
    'sélection tableau (zone données)
  Sheets("Feuil1").Select
derligne = Range("J" & Rows.Count).End(xlUp).Row
 Range("A1").Select
 'raz filtrage
 ActiveSheet.Range("A1").AutoFilter
 If AutoFilterMode = False Then ActiveSheet.Range("A1").AutoFilter
 'copie type 1
 ActiveSheet.Range("$A$1:$O$" & derligne).AutoFilter Field:=10, Criteria1:="1"
 ActiveSheet.Range("$A$1:$O$" & derligne).Copy
 Sheets("Feuil2").Select
 Range("A1").Select
 ActiveSheet.Paste
 'copie type 2
 Sheets("Feuil1").Select
 ActiveSheet.Range("$A$1:$O$" & derligne).AutoFilter Field:=10, Criteria1:="2"
 ActiveSheet.Range("$A$1:$O$" & derligne).Copy
 Sheets("Feuil3").Select
 Range("A1").Select
 ActiveSheet.Paste
 Sheets("Feuil1").Select
Application.CutCopyMode = False
End Sub
 
Re : Question VBA

Rebonjour et re-merci pour votre aide d'hier !
J'ai juste une dernière question, j'ai voulu finalement non pas copier mes 1 et 2 mais les couper. Me croyant intelligente j'ai donc juste supprimé ".copy" pour écrire a sa place ".cut" mais ça ne marche pas, ça me coupe toute la page sans prendre en compte les filtres...

Si vous pouvez me dire ce qu'il faut alors faire ?

Merci encore!

Megan
 
Re : Question VBA

Bonjour

tu les copie puis tu les supprimes ou tu les supprimes seulement ?


copie puis supprime (non testé)

Code:
Sub Macro1()
     'sélection tableau (zone données)
   Sheets("Feuil1").Select
 derligne = Range("J" & Rows.Count).End(xlUp).Row
  Range("A1").Select
  'raz filtrage
  ActiveSheet.Range("A1").AutoFilter
  If AutoFilterMode = False Then ActiveSheet.Range("A1").AutoFilter
  'copie type 1
  ActiveSheet.Range("$A$1:$O$" & derligne).AutoFilter Field:=10, Criteria1:="1"
  ActiveSheet.Range("$A$1:$O$" & derligne).Copy
  Sheets("Feuil2").Select
  Range("A1").Select
  ActiveSheet.Paste
  Sheets("Feuil1").Select
  Rows("2:derligne").Delete Shift:=xlUp 'supprime
  ActiveSheet.Range("$A$1:$O$8").AutoFilter Field:=10 ' affiche ce qui reste
  'copie type 2
  ActiveSheet.Range("$A$1:$O$" & derligne).AutoFilter Field:=10, Criteria1:="2"
  ActiveSheet.Range("$A$1:$O$" & derligne).Copy
  Sheets("Feuil3").Select
  Range("A1").Select
  ActiveSheet.Paste
  Sheets("Feuil1").Select
  Rows("2:derligne").Delete Shift:=xlUp 'supprime
  ActiveSheet.Range("$A$1:$O$8").AutoFilter Field:=10 ' affiche ce qui reste
 Application.CutCopyMode = False
 End Sub

supprime sans copie

Code:
Sub Macro1()
     'sélection tableau (zone données)
   Sheets("Feuil1").Select
 derligne = Range("J" & Rows.Count).End(xlUp).Row
  Range("A1").Select
  'raz filtrage
  ActiveSheet.Range("A1").AutoFilter
  If AutoFilterMode = False Then ActiveSheet.Range("A1").AutoFilter
  'copie type 1
  ActiveSheet.Range("$A$1:$O$" & derligne).AutoFilter Field:=10, Criteria1:="1"
  Rows("2:derligne").Delete Shift:=xlUp 'supprime
  ActiveSheet.Range("$A$1:$O$8").AutoFilter Field:=10 ' affiche ce qui reste
  'copie type 2
  ActiveSheet.Range("$A$1:$O$" & derligne).AutoFilter Field:=10, Criteria1:="2"
  Rows("2:derligne").Delete Shift:=xlUp 'supprime
  ActiveSheet.Range("$A$1:$O$8").AutoFilter Field:=10 ' affiche ce qui reste
 Application.CutCopyMode = False
 End Sub
 
Re : Question VBA

Bonjour le fil, bonjour le forum,

Vu le retard, je doute que tu repasses par ici... Je t'envoie quand même ton fichier modifié avec un bouton et une Userform qui permettent de filtrer plusieurs catégories différentes (mais une seule à la fois)... Code commenté.
Le fichier :

 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
521
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…