Macro Excel
Résolu/Fermé
Evedll
Messages postés
74
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
26 septembre 2023
-
19 mars 2011 à 19:42
Mike-31 Messages postés 18350 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 28 novembre 2024 - 20 mars 2011 à 13:52
Mike-31 Messages postés 18350 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 28 novembre 2024 - 20 mars 2011 à 13:52
A voir également:
- Macro Excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
4 réponses
Mike-31
Messages postés
18350
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
28 novembre 2024
5 106
19 mars 2011 à 19:51
19 mars 2011 à 19:51
Salut,
Si j'ai bien compris, tu veux copier les lignes non vide de la plage A22:H33 mais de quelle feuille et vers quelle feuille !
et cette copie doit elle se mettre à la suite de données déjà existantes !
Si j'ai bien compris, tu veux copier les lignes non vide de la plage A22:H33 mais de quelle feuille et vers quelle feuille !
et cette copie doit elle se mettre à la suite de données déjà existantes !
Mike-31
Messages postés
18350
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
28 novembre 2024
5 106
20 mars 2011 à 10:54
20 mars 2011 à 10:54
Re,
Un petit code basique avec quelques explications pour suivre et comprendre l'action à copier dans un module, ou à intégrer dans les propriétés d'un bouton activeX
Sub Test()
Application.ScreenUpdating = False 'évite le déplacement pendant l'exécution du code
Sheets("ventilation").Activate 'sélectionne la feuille
Range("A22", Range("H33")).Select 'sélectionne la plage
Selection.AutoFilter Field:=1, Criteria1:="<>" 'filtre la plage et sélectionne les cellules non vide
Selection.Copy
Sheets("Inscriptions").Activate 'sélectionne la feuille du transfert
Range("A65000").End(xlUp).Offset(1).Select 'recherche la première cellule vide
ActiveSheet.Paste 'copie les données
Sheets("ventilation").Activate 'reviens sur la feuille de départ
Application.CutCopyMode = False 'désactive le mode Copier
Selection.AutoFilter 'désactive le filtre
Range("A1").Select
Application.ScreenUpdating = True 'rétabli les fonctions Excel
End Sub
Un petit code basique avec quelques explications pour suivre et comprendre l'action à copier dans un module, ou à intégrer dans les propriétés d'un bouton activeX
Sub Test()
Application.ScreenUpdating = False 'évite le déplacement pendant l'exécution du code
Sheets("ventilation").Activate 'sélectionne la feuille
Range("A22", Range("H33")).Select 'sélectionne la plage
Selection.AutoFilter Field:=1, Criteria1:="<>" 'filtre la plage et sélectionne les cellules non vide
Selection.Copy
Sheets("Inscriptions").Activate 'sélectionne la feuille du transfert
Range("A65000").End(xlUp).Offset(1).Select 'recherche la première cellule vide
ActiveSheet.Paste 'copie les données
Sheets("ventilation").Activate 'reviens sur la feuille de départ
Application.CutCopyMode = False 'désactive le mode Copier
Selection.AutoFilter 'désactive le filtre
Range("A1").Select
Application.ScreenUpdating = True 'rétabli les fonctions Excel
End Sub
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
20 mars 2011 à 11:39
20 mars 2011 à 11:39
Bonjour,
Un exemple de ce que tu pourrais faire :
Il faudra peut-être changer le test du if si tu as des formules et de ce que tu considères comme étant une cellule vide.
eric
Un exemple de ce que tu pourrais faire :
Sub copier() Dim lig As Long For lig = 22 To 33 If Application.CountA(Cells(lig, 1).Resize(1, 8)) > 0 Then Cells(lig, 1).Resize(1, 8).Copy Destination:=Worksheets("Feuil2").[A65536].End(xlUp).Offset(1, 0) End If Next lig End Sub
Il faudra peut-être changer le test du if si tu as des formules et de ce que tu considères comme étant une cellule vide.
eric
Evedll
Messages postés
74
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
26 septembre 2023
20 mars 2011 à 12:41
20 mars 2011 à 12:41
Bonjour Mike et Eric,
Je vous remercie de vos réponses.
Pour mon cas de figure, c'est la réponse de Mike qui correspond à mes besoins car le filtre définit exactement les cellules non vides. Mes manipulations précédentes font que les cellules non vides ne sont pas considérées comme telles et c'est ce qui me bloquait. Toutes les méthodes de sélection les prenaient quand même en compte.
Donc cette methode est super (dommage de ne pas y avoir pensé avant).
De plus les explications de chaque ligne de code sont intéressantes pour celles et ceux qui n'ont aucune connaissance en macro.
En ce qui concerne la macro d'Eric, j'essayerai de l'utiliser pour d'autres manipulations en temps voulu (ne serait que pour la tester car elle semble être très rapide mais il faut que je l'analyse pour la comprendre).
Je vous remercie beaucoup car je me creuse les méninges avec les macros (que j'adore) mais j'ai encore un grand chemin à faire pour être autonome.
C'est sympa de savoir qu'il y a toujours des personnes qui aident.
Encore Merci
Evelyne
Je vous remercie de vos réponses.
Pour mon cas de figure, c'est la réponse de Mike qui correspond à mes besoins car le filtre définit exactement les cellules non vides. Mes manipulations précédentes font que les cellules non vides ne sont pas considérées comme telles et c'est ce qui me bloquait. Toutes les méthodes de sélection les prenaient quand même en compte.
Donc cette methode est super (dommage de ne pas y avoir pensé avant).
De plus les explications de chaque ligne de code sont intéressantes pour celles et ceux qui n'ont aucune connaissance en macro.
En ce qui concerne la macro d'Eric, j'essayerai de l'utiliser pour d'autres manipulations en temps voulu (ne serait que pour la tester car elle semble être très rapide mais il faut que je l'analyse pour la comprendre).
Je vous remercie beaucoup car je me creuse les méninges avec les macros (que j'adore) mais j'ai encore un grand chemin à faire pour être autonome.
C'est sympa de savoir qu'il y a toujours des personnes qui aident.
Encore Merci
Evelyne
Mike-31
Messages postés
18350
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
28 novembre 2024
5 106
20 mars 2011 à 12:55
20 mars 2011 à 12:55
Re,
Après avoir lu ta demande, j'ai écrit un code très basique qu'il est possible d'écrire de façon plus technique comme celui d'Eriiic que je salue.
Si ton bouton de déclenchement du code est sur la feuille "ventilation", tu peux supprimer cette première ligne
Sheets("ventilation").Activate 'sélectionne la feuille
cordialement
Après avoir lu ta demande, j'ai écrit un code très basique qu'il est possible d'écrire de façon plus technique comme celui d'Eriiic que je salue.
Si ton bouton de déclenchement du code est sur la feuille "ventilation", tu peux supprimer cette première ligne
Sheets("ventilation").Activate 'sélectionne la feuille
cordialement
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
20 mars 2011 à 13:26
20 mars 2011 à 13:26
Re tout le monde :-)
En fait je n'avais même pas vu que tu avais répondu mike...
Je ne suis pas bien réveillé ;-)
eric
En fait je n'avais même pas vu que tu avais répondu mike...
Je ne suis pas bien réveillé ;-)
eric
Mike-31
Messages postés
18350
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
28 novembre 2024
5 106
20 mars 2011 à 13:52
20 mars 2011 à 13:52
Salut Eriiic,
Mais il n'y a pas de mal, bien au contraire cela permet d'échanger des codes dans l'intérêt de tous et de se croiser.
vu les explications d'Evedll, je n'ai pas voulu le perdre dans un code trop technique et lui ai posté un code tout à fait basique afin qu'il puisse facilement le reproduire et avec le tien il à de quoi jouer s'il veut progresser.
Cordialement
bon dimanche
Mais il n'y a pas de mal, bien au contraire cela permet d'échanger des codes dans l'intérêt de tous et de se croiser.
vu les explications d'Evedll, je n'ai pas voulu le perdre dans un code trop technique et lui ai posté un code tout à fait basique afin qu'il puisse facilement le reproduire et avec le tien il à de quoi jouer s'il veut progresser.
Cordialement
bon dimanche
19 mars 2011 à 19:56
Mes données sont dans la plage A22:H33 de la feuille "ventilation" et elles doivent être collées dans la feuille "Inscriptions" à la suite de données existantes.
Ce qu'il me manque c'est de faire la sélection automatiquement.
Je sais comment faire le transfert (car je récupère des lignes de code quand je les comprends) mais je ne sais pas comment sélectionner la plage de cellules dont j'ai besoin.
Merci pour ton aide