Transmission de lignes Excel en fin de liste
Résolu/Fermé
A voir également:
- Transmission de lignes Excel en fin de liste
- Liste déroulante excel - Guide
- Aller à la ligne excel - Guide
- Site de vente en ligne particulier - Guide
- Formule excel - Guide
- Excel liste déroulante en cascade - Guide
2 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
8 juin 2011 à 09:16
8 juin 2011 à 09:16
Bonjour,
Votre projet est tout à fait réalisable, par vba, avec quelques notions de base...
Je peux vous y aider sans souci.
Etes vous déjà allé dans l'éditeur VBE?
On va essayer juste pour "rire" de créer une petite macro inutile.
Sous une feuille excel tapez ALT+F11, ça y est, vous êtes dans l'éditeur VBE...
Insertion/Module
Une "page" blanche s'affiche dans la fenêtre centrale.
Ecrivez dans cette page le code suivant : [les lignes commençants par une apostrophe sont des commentaires pour ta compréhension, ils apparaitront en vert dans l'éditeur]
Pour lancer cette macro, fermez Visual Basic Editor et, sous votre feuille excel tapez ALT + F8, sélectionnez MaPremiereMacro et cliquez sur Exécuter.
Ceci est juste pour vous familiariser avec l'environnement...
Les codes que vous aurez besoin de connaitre sont, pour l'essentiel :
première ligne vide (colonne A) :
Copier / coller : Copy Paste
Etc...
Tu dis!
Votre projet est tout à fait réalisable, par vba, avec quelques notions de base...
Je peux vous y aider sans souci.
Etes vous déjà allé dans l'éditeur VBE?
On va essayer juste pour "rire" de créer une petite macro inutile.
Sous une feuille excel tapez ALT+F11, ça y est, vous êtes dans l'éditeur VBE...
Insertion/Module
Une "page" blanche s'affiche dans la fenêtre centrale.
Ecrivez dans cette page le code suivant : [les lignes commençants par une apostrophe sont des commentaires pour ta compréhension, ils apparaitront en vert dans l'éditeur]
'ouverture de la procédure, on lui donne ici son nom 'plus le nom sera explicite, mieux ce sera Sub MaPremiereMacro() 'le cas échéant, on déclare, à cet endroit, les variables 'ici on va avoir besoin d'une variable "String" = chaine de caractères Dim Resultat As String 'On lance un message à l'utilisateur, celui-ci ne pourra répondre que oui ou non Resultat = MsgBox("Etes vous de bonne humeur ce matin?", vbYesNo, "Questionnement") 'On teste maintenant la réponse de l'utilisateur 's'il a cliqué oui, la messageBox a affecté à notre variable Resultat la valeur : "vbYes" 'Donc en fait, on va tester la valeur de cette variable : If Resultat = vbYes Then 'Si l'utilisateur a cliqué "oui" on envoie un message simple : MsgBox "Tant mieux pour vous" Else 'sinon 's'il a cliqué "non" on envoie un message différent MsgBox "Et bien allez vous recoucher" End If 'fin de la macro End Sub
Pour lancer cette macro, fermez Visual Basic Editor et, sous votre feuille excel tapez ALT + F8, sélectionnez MaPremiereMacro et cliquez sur Exécuter.
Ceci est juste pour vous familiariser avec l'environnement...
Les codes que vous aurez besoin de connaitre sont, pour l'essentiel :
première ligne vide (colonne A) :
Dim PremiereLigneVide As Long PremiereLigneVide = Range("A65536").End(xlUp).Row + 1 Cells(PremiereLigneVide, 1).Select
Copier / coller : Copy Paste
Etc...
Tu dis!
Bonjour,
Merci de la réponse ! Ca me sera toujours très utile pour mes bidouillages sur Excel ;)
Néanmoins une réponse à mon problème a été apportée par aragorn88 sur les forums du site du zéro, hier.
La macro est la suivante, s'il y en a que ça peut aider après moi :
Sub Copier_coller(ligne As Integer)
'copie et colle les lignes non vides
'argument ligne = première ligne vide de la feuille de destination
With Worksheets("Feuil1")
'mise en place du filtre pour supprimer les lignes vides
'arbitrairement les cellules à copier sont entre C5 et E16
'ce qui signifie entête de colonnes en C4:E4
.Range("C4:E16").AutoFilter Field:=1, Criteria1:="<>"
'copier et coller
'les entêtes des colonnes sur la feuille 2 sont en ligne 1
'on colle sur les colonnes A et suivantes
.Range("C5:E16").Copy _
Destination:=Worksheets("Feuil2").Range("A" & ligne)
'supprimer le filtre
.AutoFilterMode = False
End With
End Sub
Function RechercheLigne() As Integer
'recherche et renvoi la première ligne vide dans
'la zone de copie des lignes
Dim ligne As Integer
ligne = 1
'les entêtes des colonnes sur la feuille 2 sont en ligne 1
'on colle sur les colonnes A et suivantes
With Worksheets("Feuil2")
While .Range("A" & ligne).Value <> ""
ligne = ligne + 1
Wend
End With
RechercheLigne = ligne
End Function
Sub Bouton1_Clic()
Application.ScreenUpdating = False
Dim ligne As Integer
ligne = RechercheLigne()
Copier_coller (ligne)
Application.ScreenUpdating = True
End Sub
Voilà, merci quand même pour la réponse, et au plaisir ! ;)
Merci de la réponse ! Ca me sera toujours très utile pour mes bidouillages sur Excel ;)
Néanmoins une réponse à mon problème a été apportée par aragorn88 sur les forums du site du zéro, hier.
La macro est la suivante, s'il y en a que ça peut aider après moi :
Sub Copier_coller(ligne As Integer)
'copie et colle les lignes non vides
'argument ligne = première ligne vide de la feuille de destination
With Worksheets("Feuil1")
'mise en place du filtre pour supprimer les lignes vides
'arbitrairement les cellules à copier sont entre C5 et E16
'ce qui signifie entête de colonnes en C4:E4
.Range("C4:E16").AutoFilter Field:=1, Criteria1:="<>"
'copier et coller
'les entêtes des colonnes sur la feuille 2 sont en ligne 1
'on colle sur les colonnes A et suivantes
.Range("C5:E16").Copy _
Destination:=Worksheets("Feuil2").Range("A" & ligne)
'supprimer le filtre
.AutoFilterMode = False
End With
End Sub
Function RechercheLigne() As Integer
'recherche et renvoi la première ligne vide dans
'la zone de copie des lignes
Dim ligne As Integer
ligne = 1
'les entêtes des colonnes sur la feuille 2 sont en ligne 1
'on colle sur les colonnes A et suivantes
With Worksheets("Feuil2")
While .Range("A" & ligne).Value <> ""
ligne = ligne + 1
Wend
End With
RechercheLigne = ligne
End Function
Sub Bouton1_Clic()
Application.ScreenUpdating = False
Dim ligne As Integer
ligne = RechercheLigne()
Copier_coller (ligne)
Application.ScreenUpdating = True
End Sub
Voilà, merci quand même pour la réponse, et au plaisir ! ;)