Sélectionner une intersection de ligne et de colonne variable
Bonjour,
Je souhaiterai sélectionner l'intersection de n1 lignes et n2 colonnes via une macro ;
En entré ; - une cellule contenant le nombre de colonne souhaité
- une cellule contenant le nombre de ligne souhaité
et je voudrai en sortie pouvoir sélectionner l'intersection de ces lignes et colonnes
Exemple :
nombre de lignes à sélectionner : 3
nombre de colonnes à sélectionner : 4
résultat on sélectionne de A jusqu'à D pour les 3 premières lignes.
Est ce possible ?
Bien à vous !
Bonjour,
Sur le principe c'est ça, en pratique j'aimerai que les infos nombre de colonne et nombre de lignes soient extraites de deux cellules et non pas via boite de dialogue.
Comment procéder ?
Merci !
Bonjour hugobr, fronck, le forum,
A tester....
Sub selection()
Dim lig, col
lig = Range("L1").Value 'cellule contenant le nombre de ligne
col = Range("L2").Value 'cellule contenant le nombre de colonnes
'si l'une des cellules est vide, nulle où ne contient pas un nombre, message+ sortie de la procédure
If Not IsNumeric(lig) Or Not IsNumeric(col) _
Or lig = "" Or col = "" _
Or lig < 1 Or col < 1 Then MsgBox "Veuillez saisir un nombre entier (supérieur à zéro) en L1 et L2": Exit Sub
Sheets("Feuil1").Range(Cells(lig, 1), Cells(1, col)).Select
End Sub
Cordialement,
Merci xorsankukai !
Il me semble que tu as déjà pu m'aider lors d'un de mes précédents projet, j'admire tes compétences sur excel !
Donc je me permet de te solliciter encore une fois ;
-finalement, le nombre de ligne sera fixe (le nombre de colonne reste variable)
Désormais une fois que j'ai sélectionné ces cellules, j'aimerai qu'excel les copie et fasse un collage image (E) sur une autre image représentant une sorte d'étagère.
La difficulté ; ajuster la taille du collage sur le fond (dimension du collage en largeur variable car nombre de colonne variable mais image de fond fixe)
Mon idée ;
-on connait la largeur de l'image
-on connait le nombre de colonne
--> il faut diviser la largeur de l'image par le nombre de colonne afin d'obtenir la largeur d'une colonne pour pouvoir la redimensionner
En suite, on peut copier et coller au bon endroit
Est ce possible tu crois ?
Ci joint mon fichier de travail (un peu brouillon) avec l'idée du rendu final
Merci !
Bonjour à tous,
Hou la, trop compliqué pour moi, je n'ai pas l'habitude d'utiliser des images sur excel.....
Une piste néanmoins....
On connait la hauteur et la largeur de l'image de destination...
Dim hauteur, largeur
hauteur = ActiveSheet.Shapes.Range(Array("Picture 28")).Height
largeur = ActiveSheet.Shapes.Range(Array("Picture 28")).Width
'MsgBox hauteur & " / " & largeur.....Il faudrait alors redimensionner l'image à coller....
Juste par curiosité:
Pourquoi travailler avec des images et non pas les cellules directement ?
Cordialement,
Bonjour,
Je pense que c'est réalisable ;
-il faut tout d'abord avoir un lien entre taille d'une cellule affichée lorsque l'on redimensionne (sous forme largeur : 15,00 (110 pixels)) et une taille en cm
-en suite, sélectionner le nombre de cellule souhaitée
-Redimensionner les cellules pour que ça rentre dans l'image.
J'ai un peu complexifié la chose car c'était trop facile
J'ai ajouté une colonne vide (largeur fixe) entre deux colonnes à largeur variable
Il faut donc sélectionner une certaine plage et redimensionner une colonne sur deux
Pour trouver la taille d'une cellule il faut appliquer cette formule :
(12-(x-1)*0,5)/x = y
12 = taille image fixe en cm
x = nombre de cellule sélectionné
0,5= taille d'une cellule a largeur fixe en cm
y = taille des cellules à redimensionner en cm
Est ce que tu crois qu'avec une macro, il est possible de redimensionner les cellules souhaitées ?
Pour coller sur l'image, on verra après.
Sinon pour le faire avec des cellules, pourquoi pas, si je suis capable d'afficher un truc qui ressemble à une étagère à la fin.
Je joins mon fichier pour te présenter ma vision de la chose
Merci encore pour ton aide !
Bonsoir Hugo, le forum,
Comme je te le disais, je ne maitrise pas les images sur excel, mais comme je suis curieux, j'ai fait quelques tests....
- On crée une image (nommée IMG)
- On la redimensionne pour qu'elle tienne dans le cadre
- On la positionne dans le cadre (j'ai fait correspondre le coin gauche du cadre avec C19).
- On efface et on recommence à chaque clic sur le bouton.
Sub TESTTABLEAU()
' TESTTABLEAU Macro
Dim var As Integer, shp As Shape
var = Range("X15").Value
Application.ScreenUpdating = False
For Each shp In ActiveSheet.Shapes
If shp.Name = "IMG" Then shp.Delete 'efface IMG
Next shp
Sheets("Feuil4").Range(Cells(9, 1), Cells(1, var)).Copy
With ActiveSheet.Pictures.Paste
.ShapeRange.LockAspectRatio = msoFalse 'ne conserve pas le ratio
.ShapeRange.Height = 400 'hauteur
.ShapeRange.Width = 322 'largeur
.Name = "IMG" 'nom
.ShapeRange.Top = [C19].Top 'positionnement sur C19
.ShapeRange.Left = [C19].Left
End With
Application.CutCopyMode = False 'désactive la selection
End Sub
Cordialement,
Bonjour,
Xorsankukai, je suis scotché ! C'est exactement ce que j'attendais, ça fonctionne super bien c'est incroyable.
Je te remercie pour le temps que tu as passé à traiter le sujet, certainement sur ton temps libre! Je trouve ça génial que tu partages tes connaissances avec les autres, mais encore plus le fait que tu te sois formé par toi-même sur un sujet que tu ne connaissais pas
Pour ma part, je vais tenter d'intégrer ça dans un fichier plus standard lié à mon entreprise.
Est ce que le fait de changer l'image de fond peut interférer avec la macro ? J'aurai besoin de passer l'indication retour de vide en bas dans certaines situations.
Je sais faire la manip, j'imagine que si je replace tout au même endroit cela devrait fonctionner ?
Encore merci ! Je vais tenter de mettre une petite indication, by xorsankukai dans un coin ;)
Bonjour hugo,
Merci pour le retour,
Est ce que le fait de changer l'image de fond peut interférer avec la macro ? J'aurai besoin de passer l'indication retour de vide en bas dans certaines situations.
A priori, non.
A toi de trouver le bon réglage en adaptant la hauteur et la largeur (ici 400 et 322) pour que cela tienne dans ton cadre et en modifiant la cellule correspondant au coin haut gauche de ton cadre.
Voici un exemple.....
Tu remarqueras que le hauteur, la largeur et la cellule ont été modifiées pour s'adapter à la nouvelle image de destination...
Cordialement,
Bonjour xorsankukai,
Je rencontre des difficultés pour adapter le fichier dans mon fichier de travail ;
Mon fichier de travail dispose d'une mise en page particulière, je ne peux donc pas avoir les données à copier sur cette feuille.
J'ai donc voulu mettre les données à copier sur une autre feuille libre de mise en page.
Mon problème est de copier les données d'une feuille 2 et de les coller sur une feuille une. Avec le bouton macro sur la feuille 1.
Est-ce possible ?
Bien à toi,
Hugo
Bonjour hugo, le forum,
Un essai....
Sub TESTTABLEAU()
' TESTTABLEAU Macro
Dim var As Integer, shp As Shape, Fsource As Worksheet, Fdest As Worksheet
Set Fsource = Sheets("Feuil4") 'Feuille source
Set Fdest = Sheets("Feuil1") 'Feuille de destination
Application.ScreenUpdating = False
With Fsource 'agit uniquement sur cette feuille
.Activate
var = .Range("X15").Value
.Range(.Cells(9, 1), .Cells(1, var)).Copy
End With
With Fdest 'agit uniquement sur cette feuille
.Activate
For Each shp In .Shapes
If shp.Name = "IMG" Then shp.Delete 'efface IMG de Fdest
Next shp
With .Pictures.Paste 'agit sur la copie
.ShapeRange.LockAspectRatio = msoFalse 'ne conserve pas le ratio
.ShapeRange.Height = 380 'hauteur
.ShapeRange.Width = 315 'largeur
.Name = "IMG" 'nom
.ShapeRange.Top = Fdest.Range("B7").Top 'positionnement sur B7
.ShapeRange.Left = Fdest.Range("B7").Left
End With
End With
Application.CutCopyMode = False 'désactive la selection
End SubLa macro est affectée au bouton de la feuille1....
Cordialement,
Salut !
Pouah, je sais pas comment te remercier
L'ensemble fonctionne si bien, ce petit tool excel va me permettre de gagner beaucoup de temps mais surtout de rendre une partie de mon travail moins répétitif et plus efficace!
Je vais boucler le sujet, en étant presque un peu gêné devant le travail que tu as accompli sur ton temps libre. Comme quoi il existe encore des passionnés qui apprécient partager leur savoir! Encore merci à toi, bonne continuation !
Hugo