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,

Par macro, en bouton sélection sur la feuil1

25essai.xlsm (14.79 Ko)

Cdt

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
7hugobr.xlsm (42.13 Ko)

Cordialement,

15tableau.xlsm (64.80 Ko)

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 !

7tableau.xlsm (66.40 Ko)

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....

  1. On crée une image (nommée IMG)
  2. On la redimensionne pour qu'elle tienne dans le cadre
  3. On la positionne dans le cadre (j'ai fait correspondre le coin gauche du cadre avec C19).
  4. 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
6hugobr.xlsm (59.80 Ko)

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.....

8hugobr-v2.xlsm (90.81 Ko)

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,

5hugobr-v2.xlsm (94.37 Ko)

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 Sub

La macro est affectée au bouton de la feuille1....

8hugobr-v3.xlsm (73.07 Ko)

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

Rechercher des sujets similaires à "selectionner intersection ligne colonne variable"