Recentrage automatique d'un tableau
Résolu
mijean94
Messages postés
415
Date d'inscription
Statut
Membre
Dernière intervention
-
mijean94 Messages postés 415 Date d'inscription Statut Membre Dernière intervention -
mijean94 Messages postés 415 Date d'inscription Statut Membre Dernière intervention -
Bonjour et bonne année 2016 à tous,
J’ai créé une fonction macro recentrage sous Excel 2003. Pas de problème à ce niveau.
Mon problème c’est que je souhaiterais que la sélection soit automatique quelque soit l’emplacement du tableau (donc uniquement une sélection de la zone de donnée) mais je ne trouve pas la solution.
Ci-joint un fichier d’exemple : https://www.cjoint.com/c/FAgqSjEp6gt
Merci de votre aide
Cordialement
J’ai créé une fonction macro recentrage sous Excel 2003. Pas de problème à ce niveau.
Mon problème c’est que je souhaiterais que la sélection soit automatique quelque soit l’emplacement du tableau (donc uniquement une sélection de la zone de donnée) mais je ne trouve pas la solution.
Ci-joint un fichier d’exemple : https://www.cjoint.com/c/FAgqSjEp6gt
Merci de votre aide
Cordialement
A voir également:
- Recentrage automatique d'un tableau
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Réponse automatique thunderbird - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
23 réponses
Bonjour
Difficile même avec ton exemple de comprendre ce que tu veux; peux tu compléter tes explications.
Du genre
J'ai un tableau en C4:K8, je veux .....
Cdlmnt
Difficile même avec ton exemple de comprendre ce que tu veux; peux tu compléter tes explications.
Du genre
J'ai un tableau en C4:K8, je veux .....
Cdlmnt
Bonjour,
Quelque soit l’emplacement du tableau sur la feuille, je souhaite le sélectionner puis le replacer sur le haut de la feuille.
Cordialement
Quelque soit l’emplacement du tableau sur la feuille, je souhaite le sélectionner puis le replacer sur le haut de la feuille.
Cordialement
Ta solution marche très bien pour moi, merci.
Est-il possible que la sélection soit automatique ?
Cordialement
Est-il possible que la sélection soit automatique ?
Cordialement
J’ai fait des essais et la fonction marche très bien sauf dans le cas ou il y a des cases vides entre deux colonnes. Y a-t-il une solution ?
Voir fichier joint : https://www.cjoint.com/c/FAguhpMXATt
cordialement
Voir fichier joint : https://www.cjoint.com/c/FAguhpMXATt
cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Essaies ceci
Cdlmnt
Const celcible = "A1"
Sub recentrage()
Dim derlig As Long, dercol As Long, plage As Range
Dim premlig As Long, premcol As Long
derlig = Cells.Find("*", , , , xlByRows, xlPrevious).Row
premlig = Cells.Find("*", , , , xlByRows, xlNext).Row
dercol = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
premcol = Cells.Find("*", , , , xlByColumns, xlNext).Column
Set plage = Range(Cells(premlig, premcol), Cells(derlig, dercol))
plage.Cut Destination:=Range(celcible)
End Sub
Cdlmnt
Je rame depuis plus de 30 minutes pour comprendre pourquoi ta fonction (ccm81-9) qui marche si bien dans les exemples ne fonctionnée pas sur mon fichier.
Et voila pourquoi :
Dans mon ficher, les colonnes A et B et les lignes 1 et 2 ne doivent pas être prises en compte !
Le point de recalage haut doit être C3.
Aurais-tu une petite modification à me proposer ?
https://www.cjoint.com/c/FAgvhKNLdwt
Merci
Cordialement
Et voila pourquoi :
Dans mon ficher, les colonnes A et B et les lignes 1 et 2 ne doivent pas être prises en compte !
Le point de recalage haut doit être C3.
Aurais-tu une petite modification à me proposer ?
https://www.cjoint.com/c/FAgvhKNLdwt
Merci
Cordialement
Je ne comprends pas bien le problème, sur ton fichier exemple
PremLifg = 9
PremCol = 6 (F)
DerLig = 42
DerCol = 18 (R)
Ce qui définit la plage rectangulaire F9:R42
qui est bien déplacée en C3:O36 après exécution
Ce n'est pas ce que tu veux ?
Cdlmnt
PremLifg = 9
PremCol = 6 (F)
DerLig = 42
DerCol = 18 (R)
Ce qui définit la plage rectangulaire F9:R42
qui est bien déplacée en C3:O36 après exécution
Ce n'est pas ce que tu veux ?
Cdlmnt
OK ccm81, toutes mes excuses, je n’avais pas remarqué que mon bouton de commande macro pointé sur une autre version de fichier avec le positionnement en A1. pb lorsque j'ai sauvegardé le fichier de la version 4 à la version 5.
Ça marche donc très bien. Merci
Comment faut-il faire pour que les macros soient toujours bien accrochée au fichier sauvegardé en cas de changement de nom?
Cordialement
Ça marche donc très bien. Merci
Comment faut-il faire pour que les macros soient toujours bien accrochée au fichier sauvegardé en cas de changement de nom?
Cordialement
En principe un "eregistrer sous" conserve le lien du raccourci-clavier vers la macro.
Par contre, si tu integres la macro à un nouveau fichier, il te faut recréer le raccourci-clavier
L'adresse de la cellule cible (A1 devenu C3) doit bien sûr être modifiée dans la macro en cas de changement de configuration
Cdlmnt
Par contre, si tu integres la macro à un nouveau fichier, il te faut recréer le raccourci-clavier
L'adresse de la cellule cible (A1 devenu C3) doit bien sûr être modifiée dans la macro en cas de changement de configuration
Cdlmnt
Bonjour,
A l’utilisation de la fonction recentrage_zoom, dans mon fichier joint, j’ai un petit probléme : https://www.cjoint.com/c/FAju7VTssXt
La fonction macro recentrage_zoom marche très bien si il n'y a pas de donnée dans la one en jaune, mais je souhaiterais que cette fonction soit réalisée même s’il y a des données dans les céllules en jaune, donc,
Que la zone verte, dans l’exemple joint, soit déplacée mais que la zone jaune reste toujours en place.
Avez-vous une solution ?
cordialement
A l’utilisation de la fonction recentrage_zoom, dans mon fichier joint, j’ai un petit probléme : https://www.cjoint.com/c/FAju7VTssXt
La fonction macro recentrage_zoom marche très bien si il n'y a pas de donnée dans la one en jaune, mais je souhaiterais que cette fonction soit réalisée même s’il y a des données dans les céllules en jaune, donc,
Que la zone verte, dans l’exemple joint, soit déplacée mais que la zone jaune reste toujours en place.
Avez-vous une solution ?
cordialement
Bonjour
Essaies celle-ci
Cdlmnt
Essaies celle-ci
Public Sub Cale()
Dim lideb As Long, codeb As Long, lifin As Long, cofin As Long, li As Long, co As Long
Dim plage As Range
With ActiveSheet
lideb = .Range(celcible).Row
codeb = .Range(celcible).Column
lifin = Cells.Find("*", , , , xlByRows, xlPrevious).Row
cofin = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
li = lideb - 1
Do
li = li + 1
co = .Cells(li, Columns.Count).End(xlToLeft).Column
Loop Until co > codeb
lideb = li
co = codeb - 1
Do
co = co + 1
li = .Cells(Rows.Count, co).End(xlUp).Row
Loop Until li > lideb
codeb = co
'MsgBox .Cells(lideb, codeb).Address
Set plage = .Range(.Cells(lideb, codeb), .Cells(lifin, cofin))
plage.Cut Destination:=Range(celcible)
End With
End Sub
Cdlmnt
Bonjour à tous,
Bonjour CCM81
Merci CCM81pour ta fonction qui marche très bien.
Je vais essayé d'y ajouter la fonction zoom sur la zone recentrée.
Cordialement
Bonjour CCM81
Merci CCM81pour ta fonction qui marche très bien.
Je vais essayé d'y ajouter la fonction zoom sur la zone recentrée.
Cordialement
Re
Après utilisation dans mon fichier, je me suis aperçu qu’il y avait des déplacements qui étaient suspect.
La fonction si dessous ne semble pas sélectionner la dernière ligne (de ma zone en vert dans mon fichier) mais la dernière ligne de la zone jaune que je ne doit pas changé de place.
Ça ne dérange pas trop la fonction de recentrage mais lorsque je souhaitais utiliser les coordonnées pour faire un zoom sur cette sélection ça ne marche pas.
lifin = Cells.Find("*", , , , xlByRows, xlPrevious).Row
Heureusement que ce type de forum existe, car seul je galère grave. J’ai passé toute la soirée pour essayer de comprendre comment faire sans trouver de solution.
Aurais-tu une solution à me proposer.
https://www.cjoint.com/c/FAkvUgwWISt
Merci d’avance
Merci
Après utilisation dans mon fichier, je me suis aperçu qu’il y avait des déplacements qui étaient suspect.
La fonction si dessous ne semble pas sélectionner la dernière ligne (de ma zone en vert dans mon fichier) mais la dernière ligne de la zone jaune que je ne doit pas changé de place.
Ça ne dérange pas trop la fonction de recentrage mais lorsque je souhaitais utiliser les coordonnées pour faire un zoom sur cette sélection ça ne marche pas.
lifin = Cells.Find("*", , , , xlByRows, xlPrevious).Row
Heureusement que ce type de forum existe, car seul je galère grave. J’ai passé toute la soirée pour essayer de comprendre comment faire sans trouver de solution.
Aurais-tu une solution à me proposer.
https://www.cjoint.com/c/FAkvUgwWISt
Merci d’avance
Merci
En principe, en ajoutant les 5 lignes avant End With, ça devrait fonctionner
Bonne soirée
lifin = Cells.Find("*", , , , xlByRows, xlPrevious).Row
cofin = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
Set plage = .Range(.Cells(1, 1), .Cells(lifin, cofin))
plage.Select
ActiveWindow.zoom = True
End With
Bonne soirée
Re, re ...
Je crois qu'il y avait plus que ça, essaies celle là !
http://www.cjoint.com/c/FAlpgSY1I8I
Cdlmnt
Je crois qu'il y avait plus que ça, essaies celle là !
http://www.cjoint.com/c/FAlpgSY1I8I
Cdlmnt
Bonjour à tous,
bonjour ccm81 et merci pour les réponses.
La fonction zoom prend toujours en compte des données de la zone jaune.
Ce que je souhaiterais, si possible, c'est de faire un zoom uniquement sur la zone recadrée donc la zone verte.
Cordialement
bonjour ccm81 et merci pour les réponses.
La fonction zoom prend toujours en compte des données de la zone jaune.
Ce que je souhaiterais, si possible, c'est de faire un zoom uniquement sur la zone recadrée donc la zone verte.
Cordialement
Comme ça ?
Cdlmnt
Option Explicit
Const celcible = "D3"
Sub recentrage_zoom()
Dim derlig As Long, dercol As Long, plage As Range
Dim premlig As Long, premcol As Long, nbli As Long, nbco As Long
' si pas assez grand comme taille, aaugmenter les nb de lignes et de colonnes
Set plage = Range(celcible).Resize(1000, 100)
' MsgBox plage.Address
derlig = plage.Find("*", , , , xlByRows, xlPrevious).Row
premlig = plage.Find("*", , , , xlByRows, xlNext).Row
dercol = plage.Find("*", , , , xlByColumns, xlPrevious).Column
premcol = plage.Find("*", , , , xlByColumns, xlNext).Column
Set plage = Range(Cells(premlig, premcol), Cells(derlig, dercol))
nbli = plage.Rows.Count
nbco = plage.Columns.Count
plage.Cut Destination:=Range(celcible)
derlig = Range(celcible).Row + nbli - 1
dercol = Range(celcible).Column + nbco - 1
premlig = Cells.Find("*", , , , xlByRows, xlNext).Row
premcol = Cells.Find("*", , , , xlByColumns, xlNext).Column
Set plage = Range(Cells(premlig, premcol), Cells(derlig, dercol))
plage.Select
ActiveWindow.zoom = True
Range(celcible).Select
End Sub
Cdlmnt
Re,
Merci encore CCM81.
Je viens de commander un livre sur la programmation en VBA, pour essayer de comprendre, mais ce n'est pas pour cela que j'y arriverais.
Je vais pendre une soirée de détente grâce CCM81.
Bonne soirée à tous.
Cordialement
Merci encore CCM81.
Je viens de commander un livre sur la programmation en VBA, pour essayer de comprendre, mais ce n'est pas pour cela que j'y arriverais.
Je vais pendre une soirée de détente grâce CCM81.
Bonne soirée à tous.
Cordialement
De rien
En y réfléchissant encore un peu, une fin de code plus simple
Bonne soirée
Cdlmnt
En y réfléchissant encore un peu, une fin de code plus simple
plage.Cut Destination:=Range(celcible)
derlig = Range(celcible).Row + nbli - 1
dercol = Range(celcible).Column + nbco - 1
Set plage = Range(Cells(1, 1), Cells(derlig, dercol))
plage.Select
ActiveWindow.zoom = True
Range(celcible).Select
End Sub
Bonne soirée
Cdlmnt