Recentrage automatique d'un tableau
Résolu/Fermé
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
-
6 janv. 2016 à 17:47
mijean94 Messages postés 413 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 12 septembre 2024 - 12 janv. 2016 à 21:35
mijean94 Messages postés 413 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 12 septembre 2024 - 12 janv. 2016 à 21:35
A voir également:
- Recentrage automatique d'un tableau
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Message automatique thunderbird - Guide
23 réponses
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
6 janv. 2016 à 17:55
6 janv. 2016 à 17:55
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
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
11
6 janv. 2016 à 18:32
6 janv. 2016 à 18:32
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
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
6 janv. 2016 à 18:44
6 janv. 2016 à 18:44
Un exemple avec ce que j'ai compris
http://www.cjoint.com/c/FAgrRI3GCkk
Cdlmnt
http://www.cjoint.com/c/FAgrRI3GCkk
Cdlmnt
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
Modifié par ccm81 le 6/01/2016 à 18:51
Modifié par ccm81 le 6/01/2016 à 18:51
Une autre possibilité
http://www.cjoint.com/c/FAgrY4Y6DCk
http://www.cjoint.com/c/FAgrY4Y6DCk
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
11
6 janv. 2016 à 18:57
6 janv. 2016 à 18:57
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
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
6 janv. 2016 à 19:05
6 janv. 2016 à 19:05
as tu essayé la deuième possibilité (message 4) ?
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
11
6 janv. 2016 à 19:16
6 janv. 2016 à 19:16
Ça marche nickel.
Je tente de mettre cette fonction dans un fichier plus complexe après diner et je te donne le résultat.
Merci beaucoup pour tes réponses.
Cordialement
Je tente de mettre cette fonction dans un fichier plus complexe après diner et je te donne le résultat.
Merci beaucoup pour tes réponses.
Cordialement
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
11
6 janv. 2016 à 21:10
6 janv. 2016 à 21:10
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
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
6 janv. 2016 à 21:22
6 janv. 2016 à 21:22
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
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
11
6 janv. 2016 à 22:09
6 janv. 2016 à 22:09
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
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
7 janv. 2016 à 11:58
7 janv. 2016 à 11:58
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
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
11
7 janv. 2016 à 13:24
7 janv. 2016 à 13:24
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
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
7 janv. 2016 à 13:38
7 janv. 2016 à 13:38
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
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
11
7 janv. 2016 à 14:12
7 janv. 2016 à 14:12
merci pour toutes les réponses
cordialement
cordialement
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
11
9 janv. 2016 à 22:06
9 janv. 2016 à 22:06
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
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
10 janv. 2016 à 15:27
10 janv. 2016 à 15:27
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
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
11
10 janv. 2016 à 18:55
10 janv. 2016 à 18:55
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
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
11
Modifié par mijean94 le 10/01/2016 à 22:48
Modifié par mijean94 le 10/01/2016 à 22:48
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
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
10 janv. 2016 à 20:28
10 janv. 2016 à 20:28
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
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
11
10 janv. 2016 à 22:58
10 janv. 2016 à 22:58
Re,
La fonction zoom est ok, merci encore une foi, mais j'ai le problème de sélection de la lifin qui n'est pas la bonne.
Pb exposé dans le poste 19.
aurais-tu une solution ?
cordialement
La fonction zoom est ok, merci encore une foi, mais j'ai le problème de sélection de la lifin qui n'est pas la bonne.
Pb exposé dans le poste 19.
aurais-tu une solution ?
cordialement
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
11 janv. 2016 à 16:10
11 janv. 2016 à 16:10
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
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
11 janv. 2016 à 16:59
11 janv. 2016 à 16:59
Re, re, re ...
Et surtout celle là nettement plus simple
http://www.cjoint.com/c/FAlp6FrNhuI
Cdlmnt
Et surtout celle là nettement plus simple
http://www.cjoint.com/c/FAlp6FrNhuI
Cdlmnt
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
11
11 janv. 2016 à 18:19
11 janv. 2016 à 18:19
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
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
11 janv. 2016 à 19:02
11 janv. 2016 à 19:02
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
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
11
11 janv. 2016 à 19:23
11 janv. 2016 à 19:23
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
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
11 janv. 2016 à 19:57
11 janv. 2016 à 19:57
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