> Tous les forums > Forum Bureautique
 Atteindre dernière celluleSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
JeanDel
  Posté le 04/08/2006 @ 18:37 
Aller en bas de la page 
Petit astucien
Bonjour, J'ai besoin de votre aide pour un code macro dont le but est de coller la copie d'une plage dans la colonne AJ à la suite des collages précédents. Quelqu'un a-t-il des connaissances en vba à ce sujet. Est-ce réalisable ? En vous remerciant.
Publicité
Bérylion
 Posté le 04/08/2006 à 18:47 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

salut tu dois parler d'un truc dans le genre [code] Columns("AJ:AJ").Select Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Range("A1").Select ActiveSheet.Paste [/code]
JeanDel
 Posté le 04/08/2006 à 18:52 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Merci Bérylion, Je regarde ca dès demain car pour aujourd'hui la journée ca me suffit. Toujours fidèle je vois, c'est réconfortant car je n'ai pas fini de t'interpeller. Bonne soirée à toi.
JeanDel
 Posté le 05/08/2006 à 12:03 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Bonjour Bérylion, Je reviens vers vous car je patauge pou mon premier code en vba. Sans aucun doute, mes explications étaient trop succinctes, C'est pourquoi je joints un fichier exemple concernant ce à quoi j'aspire à arriver. Il s'agit de ma première application en vba, je sollicite de votre part votre indulgence. http://cjoint.com/?ifmaYU0iUH En vous remerciant.
JeanDel
 Posté le 05/08/2006 à 18:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Bonsoir, Qui peut me détailler ce code et me dire à quoi ça correspond svp Private Sub Feuilles_Worbook_Open() Dim Bcle%, Index%, Sh As Object On Error Resume Next With ThisWorkbook For Each Sh In ThisWorkbook.Sheets If Sh.Index > 5 Then For Index = 6 To .Sheets.Count If LCase(Sh.Name) > LCase(.Sheets(Index).Name) And Sh.Index < Index Then Sh.Move , .Sheets(Index) End If Next Index End If Next Sh End With End Sub En vous remerciant de l'aide que vous m'apporterez
galopin01
 Posté le 05/08/2006 à 21:22 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien
bonjour, Euh... Nous aussi on patauge : Pour tes débuts en VBA tu sembles t'attaquer à forte partie. Il me parait difficile de donner suite à ta demande qui dépasse (enfin c'est juste mon avis...) le cadre du forum. La dernière macro citée reclasse dans l'ordre alphabétique les feuilles du classeur à partir du sixième onglet. A+

Modifié par galopin01 le 05/08/2006 21:23
Bérylion
 Posté le 06/08/2006 à 22:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

galopin01 a écrit :
bonjour, Euh... Nous aussi on patauge : Pour tes débuts en VBA tu sembles t'attaquer à forte partie. Il me parait difficile de donner suite à ta demande qui dépasse (enfin c'est juste mon avis...) le cadre du forum. La dernière macro citée reclasse dans l'ordre alphabétique les feuilles du classeur à partir du sixième onglet. A+
Salut l'ami [clindoeil] tu passes trop de temps à la pêche... [bigsmile] Alors : 1- y commence par télécharger la [url="http://cjoint.com/?igwCaeb8Oe"]bestiole[/url] 2- il ouvre 3- y clique sur "nouveau congé" 4- y trie par nom, puis par prénom 5- ATTENTION, ça se complique ! y trie pas par "type de congé" MAIS y sélectionne celui qu'y veut dans la liste (en gros y'a 2 flêches, y clique sur celle de droite) 6- y clique sur "Màj" 7- y rempli la demande 8- y clique sur "valider" 9- y recommence à partir du 3- pour voir s'y c'est bien ça qu'y voulait pour la couleur des boutons, je crois qu'on ne peut choisir que celle de la police (PS : j'ai commenté un peu le code, si ça peut t'aider)
JeanDel
 Posté le 07/08/2006 à 09:28 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Bonjour Bérylion, Galopin01, Je viens de charger la bestiole et je vais regarder avec attention. Mais, au vu des répponses, j'avais recommencé ma copie. C'est vrai que je vise "haut" pour mon premier code, mais autant, je pense faire dans du concret pour une meilleur compréhension de ce code dont je ne comprends que peu de mot. Quand au code mis sur ce forum, c'est une copie glané sur le net et je vous remercie pour les explications données. Je reviendrai pour la suite, si cela ne vous ennuie pas. En vous remerciant chaleureusement
Bérylion
 Posté le 07/08/2006 à 11:47 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Salut le plus important (et parfois le plus difficille !) est d'exposer clairement le problème, et d'exprimer son besoin. Ensuite, on trouve toujours une solution si c'est possible, ou dans nos cordes. Maître Galopin, notre docteur excel, a dû patauger dans tes explications. j'ai moi même passé plus de temps à essayer de comprendre ce que tu voulais faire qu'à le réaliser ensuite. Pourtant, ce code est simple (c'est pas Galopin qui dira le contraire, pour une fois que j'ai épuré...), c'est juste du "bricolage", et pas de la programmation pure et dure, qui effectivement dépasse, et de loin, mes quelques rares notions de VBA (mais notre ami Galopin veille au grain...[clindoeil]). bref, j'espère avoir compris et que ça fonctionne, sinon dis nous ce qui va pas, on arrangera ça (dans la mesure du possible...) [bigsmile]
JeanDel
 Posté le 07/08/2006 à 13:34 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Bonjour, Merci à vous deux pour vos enseignements. Vous avez complètement raison, aussi je revois ma copie et ka mettais pour vérif si correct. Existe-t-il un code permettant : - de copier une plage de cellule B6:N6 sur une feuille - de sélectionner la feuille ou doit s'effectuer la copie dont la cellule B6 correspond au nom de la feuille à trouver et à coller la plage copiée à la suite de la dernière cellule remplie + 1 de la colonne A de cette feuille. Je galère vraiment, mais je trouve ceci super intéressant à faire. Je ne vous remercierai jamais assez pour vos conseils et votre aide.
Bérylion
 Posté le 07/08/2006 à 14:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

JeanDel a écrit :
Bonjour, Merci à vous deux pour vos enseignements. Vous avez complètement raison, aussi je revois ma copie et ka mettais pour vérif si correct. Existe-t-il un code permettant : - de copier une plage de cellule B6:N6 sur une feuille - de sélectionner la feuille ou doit s'effectuer la copie dont la cellule B6 correspond au nom de la feuille à trouver et à coller la plage copiée à la suite de la dernière cellule remplie + 1 de la colonne A de cette feuille. Je galère vraiment, mais je trouve ceci super intéressant à faire. Je ne vous remercierai jamais assez pour vos conseils et votre aide.
[code] Sub test() Dim Fl As String Fl = Range("b6").Value Range("B6:N6").Select Selection.Copy Sheets(Fl).Select Range("A1").Select Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False Range("A1").Select End Sub [/code] EDIT : à coller ds un module standard

Modifié par Bérylion le 07/08/2006 14:08
JeanDel
 Posté le 07/08/2006 à 17:09 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Bonsoir, Je m'exprime sûrement très mal. Ce que je souhaite c'est : Supposons que la colonne A de la feuille est renseignée jusqu'à la ligne 87 (A87) Donc, je souhaite coller la copie en A88 sachant que ceci augmente à chaque enregistrement. La cononne finira une fois remplie aux alentours de 55000 lignes. Merci pour votre pateince
Bérylion
 Posté le 07/08/2006 à 17:34 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

[code] Sub test() Dim Fl As String ' déclaration de la variable Fl Fl = Range("b6").Value ' attribution de la valeur de $b$6 à la variable Fl Range("B6:N6").Select ' sélection de la plage $b$6:$n$6 Selection.Copy ' copie de la sélection Sheets(Fl).Select ' sélection de la feuille portant le même nom que lla variable Fl Range("A1").Select ' sélection de la cellule $a$1 Selection.End(xlDown).Select ' sélection de la dernière cellule remplie de la colonne ActiveCell.Offset(1, 0).Range("A1").Select ' sélection de la cellule 1 ligne plus bas, 0 colonne plus à gauche ActiveSheet.Paste ' collage Application.CutCopyMode = False ' mode copie "off" Range("A1").Select ' sélection de la cellule $a$1 End Sub [/code] je sais pas faire mieux...
JeanDel
 Posté le 07/08/2006 à 18:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Bonsoir Bérylion, Avec beaucoup de peine, j'ai fini par trouver ce qui me manquait (1ère ligne en gras). Quand à la deuxième ligne en gras, je n'ai pas vraiment compris. si ce n'est qu'au cas ou il y aurait ou non les filtres actifs ou pas. Merci de me renseigner dans la mesure du possible. Sub Valider() Application.ScreenUpdating = False 'Trouvé sur forum pour accélérer sans flash d'écran Sheets("D Conges").Select 'Sélectionne la feuille par sécurité Range("A6:M6").Copy 'Plage de cellules copiées Sheets("Dossier").Select 'Sélection la feuille recevant les données 'La ligne de code ci-dessous recherche la dernière cellule <>0 et redescend d'un cran (1ère cellule vide de la colonne) Range("A65536").End(xlUp).Offset(1, 0).Select 'Collage des valeurs Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'Collage des Valeurs 'Selection et Mise en forme de la police par sécurité et pour la présentation du tableau final With Selection.Font .Name = "Times New Roman" .Size = 10 .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With With Selection .HorizontalAlignment = xlCenter End With Columns("A:D").Select 'Selection des colonnes A:D With Selection .HorizontalAlignment = xlLeft 'Alignement à gauche End With Range("A1").Select On Error Resume Next 'Gestionnaire d'erreur Exit Sub 'Sortie du code si pas de Filtre Selection.AutoFilter Field:=2 'Annulation du Filtre Prénom Selection.AutoFilter Field:=1 'Annulation du Filtre Noms Range("A2:B2").AutoFilter 'Supprime le Filtre Application.ScreenUpdating = True 'A remettre en final = True End Sub En fait, j'ai passé la journée à repenser le fichier qui a pris une toute autre forme. Suivant ce que vous me direz, je ferai une extra
JeanDel
 Posté le 07/08/2006 à 18:28 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Excusez-moi, mon doigt à glissé, Je disais que je ferai une extraction pour mettre à dispo sur c joint au cas ou ca intéresserai quelqu'un. Merci de ne pas hésiter à me corriger si besoin, car je n'y connais vraiment rien. En vous remerciant de tout ce temps passé à m'aider, je vous souhaite une bonne soirée.
Bérylion
 Posté le 07/08/2006 à 18:36 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Sub Valider() Application.ScreenUpdating = False 'Trouvé sur forum pour accélérer sans flash d'écran Sheets("D Conges").Select 'Sélectionne la feuille par sécurité Range("A6:M6").Copy 'Plage de cellules copiées Sheets("Dossier").Select 'Sélection la feuille recevant les données 'La ligne de code ci-dessous recherche la dernière cellule <>0 et redescend d'un cran (1ère cellule vide de la colonne) Range("A65536").End(xlUp).Offset(1, 0).Select 'Collage des valeurs Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'Collage des Valeurs 'Selection et Mise en forme de la police par sécurité et pour la présentation du tableau final With Selection.Font .Name = "Times New Roman" .Size = 10 .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With With Selection .HorizontalAlignment = xlCenter End With Columns("A:D").Select 'Selection des colonnes A:D With Selection .HorizontalAlignment = xlLeft 'Alignement à gauche End With Range("A1").Select la tu es toujours sur Sheets("Dossier") donc, si tu n'as pas de filtre sur ta feuille, les lignes en bleu sont inutiles On Error Resume Next 'Gestionnaire d'erreur Exit Sub 'Sortie du code si pas de Filtre Selection.AutoFilter Field:=2 'Annulation du Filtre Prénom Selection.AutoFilter Field:=1 'Annulation du Filtre Noms Range("A2:B2").AutoFilter 'Supprime le Filtre Application.ScreenUpdating = True 'A remettre en final = True End Sub
JeanDel
 Posté le 07/08/2006 à 21:51 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Bonsoir Bérylion, Je te remercie bien fort pour ton aimable collaboration et te dire que tu as entièrement raison, le plus difficile est d"élaborer le "plan" du projet, mais j'y suis parvenu. Enfin, je pense, puisque ca me donne satisfaction et répond à ce que je désirai. Ceci dit, j'ai bien des filtres sur les quatres premières colonnes de la feuille Dossier, à savoir : Nom : Prénom : Service : Type de Congé : Par contre, si la gestion d'erreur fonctionne, je ne la comprends pas au point de vue de son fonctionnement. En vous remerciant tous pour votre aimable collaboration et aide efficace.
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
129,99 €Ecran PC 27 pouces Dell SE2722HX (FHD, IPS, 75 Hz) à 129,99 €
Valable jusqu'au 28 Octobre

Amazon fait une promotion sur l'écran PC 27 pouces Dell SE2722HX qui passe à 129,99 € au lieu de plus de 159 € ailleurs. L'écran à cadre fin dispose d'une dalle IPS Full HD (1920x1080) à 75 Hz. Il est compatible Freesync et dispose d'une prise HDMI et d'une prise VGA. Il est garanti 3 ans.


> Voir l'offre
309,99 €Ecran PC 32 pouces incurvé Samsung G5 (WQHD, 144 Hz, 1 ms) à 309,99 €
Valable jusqu'au 27 Octobre

Amazon fait une promotion sur l'écran PC Samsung 32 pouces incurvé LC32G53TQWUXEN à 309,99 € alors qu'on le trouve ailleurs à partir de 359 €. Cet écran incurvé de 32 pouces offre une définition WQHD de 2560x1440 pixels et est compatible FreeSync Premium avec un taux de réponse de 1 ms et un rafraichissement de 144 Hz. La livraison est gratuite.


> Voir l'offre
43,00 €Clavier Corsair K55 RGB à 43 €
Valable jusqu'au 27 Octobre

Amazon fait une promotion sur le clavier Corsair K55 RGB qui passe à 43 € livré gratuitement au lieu de 60 €. Avec ses touches silencieuses et ses 6 touches macros, vous avez à votre disposition une surface de jeu idéale et performante. Ce modèle embarque la technologie anti-ghosting, des touches multimédia et un repose-poignet amovible.


> Voir l'offre

Sujets relatifs
Atteindre la dernière cellule de la colonne A
selectionner derniere cellule non vide.
Atteindre dernière colonne
Renvoi à la dernière cellule non vide d'une ligne
La dernière lettre d'une cellule concatenée
Rechercher dernière cellule non vide d'une ligne
derniere-cellule
Autoriser/forcer le débordement à l'affichage d'une cellule
copier ligne si cellule vide
export cellule vers image
Plus de sujets relatifs à Atteindre dernière cellule
 > Tous les forums > Forum Bureautique