Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2624 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Opération sur colonne variable

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Opération sur colonne variable

n°2220232
mechsangok​u
Posté le 19-02-2014 à 23:05:35  profilanswer
 

Bonjour à tous,
 
J'ai une petite question pour vous, probablement simple, mais je n'ai pas trouver de réponse adaptée (ou je suis très nul....)
 
Je construit un petit code pour des calculs de rapports sur des activités utilisateurs.
 
J'ai en colonne les groupes d'utilisateurs et en ligne les dossiers consultés.
 
Ma question:
Est-il possible de dire a la manière d'un
Range("A1:A" & Group).Copy
 
quelque chose comme
 
    'Columns("B:O" ).Select
    'Selection.ColumnWidth = 12
 
avec le O variable
 
J'ai déja le nombre de groupes en variable "Group"
 
Merci pour vos idées !
 
Mech
 

mood
Publicité
Posté le 19-02-2014 à 23:05:35  profilanswer
 

n°2220602
mmarle
Posté le 24-02-2014 à 15:11:36  profilanswer
 

Salut,
 
Je viens de saisir un bout de code qui fonctionne, à toi de t'en inspirer.
 

Code :
  1. Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
  2. 'Désactivation du menu contextuel'
  3. Cancel = True
  4. 'Déclaration de variable'
  5. Dim O As Integer
  6. O = Range("A1" ).Value
  7. 'Séléction des colonnes en fonction de O'
  8. If O <> 0 Then
  9.         If i = 1 Then
  10.             'Si O=1'
  11.             Sh.Columns(2).Select
  12.         Else
  13.             'Si O>1'
  14.             Sh.Range(Columns(2), Columns(O + 1)).Select
  15.         End If
  16.     'Ajustement de la largeur des colonnes de la séléction courante'
  17.     Selection.ColumnWidth = 12
  18. Else
  19.     'Réinitialisation de la largeur des colonnes de la feuille courante'
  20.     Sh.Columns.ColumnWidth = 8.29
  21. End If
  22. End Sub

n°2220615
Takama13
Posté le 24-02-2014 à 16:01:51  profilanswer
 

Salut,
 
C'est aussi simple que ça :
 

Code :
  1. myColumn = "D"
  2. MyGroup = "1"
  3. Range("A1:" & myColumn & MyGroup).Select

n°2220640
mmarle
Posté le 24-02-2014 à 19:30:50  profilanswer
 

Ai-je bien compris la question!? Il me semble qu'il souhaite sélectionner un certain nombre (O) de colonnes pour redimensionner leur largeur! D'où le titre "Opération sur colonne variable". Je me trompe!?
 

Citation :

quelque chose comme
 
    'Columns("B:O" ).Select
    'Selection.ColumnWidth = 12
 
avec le O variable


 
En relisant le post suivant:
 

Citation :

C'est aussi simple que ça :
 
Code :
 
    myColumn = "D"
    MyGroup = "1"
    Range("A1:" & myColumn & MyGroup).Select


 
Ben en fait oui et non! Je pense qu'il souhaite sélectionner une plage de colonnes dont il ne connait pas la "Lettre"  de la dernière, mais uniquement un "nombre" (Nombre de colonnes à séléctionner depuis la première).  
 
Eclaircissez moi la lanterne si je n'ai pas compris ce qu'il veut!
 
 
 
 

n°2220647
Takama13
Posté le 24-02-2014 à 19:49:35  profilanswer
 

A lui de nous dire comment il détermine la colonne.

n°2220762
mechsangok​u
Posté le 25-02-2014 à 17:17:16  profilanswer
 

Merci à tous pour vos réponses
 
En fait, je cherche bien a activer un nombre de colonne variable
 
Pour vous donner une idée je colle ici une partie de mon code: (ok c'est moche, c'est pas optimiser ca fait mal aux yeux tout ca, mais je suis encore un noob alors siouplé :p)
 
 'Déduction de la liste de bidder et compte du nombre de groupe bidder
     
    Sheets.Add After:=Sheets(Sheets.count)
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveSheet.Range("A1:A" & lng).RemoveDuplicates Columns:=1, Header:= _
        xlNo
    Rows("1:2" ).Delete Shift:=xlUp
     
Group = ActiveSheet.UsedRange.Rows.count
       
'Copie de la liste des bidder sur page de calcul
     
    Range("A1:A" & Group).Copy
    Sheets.Add After:=Sheets(Sheets.count)
    Range("B4" ).Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
         
    'Columns("B:O" ).Select
    'Selection.ColumnWidth = 12
 
'Détermination de la liste des dossiers principaux et compte
 
    Sheets("Sheet1" ).Select
    Columns("E:E" ).Copy
    Sheets("Sheet2" ).Select
    Sheets("Sheet2" ).Paste
    Rows("1:2" ).Delete Shift:=xlUp
       
    Columns("A:A" ).Select
    ActiveSheet.Range("A1:A" & lng).RemoveDuplicates Columns:=1, Header:= _
        xlNo
    mainf = ActiveSheet.UsedRange.Rows.count
         
    Range("A1:A" & mainf).Copy
    Sheets("Sheet3" ).Select
    Range("A5" ).Select
    ActiveSheet.Paste
     
    Range("B5" ).Select
    ActiveCell.FormulaR1C1 = "=COUNTIFS(Sheet1!C5,RC1,Sheet1!C6,R4C)"
    Selection.AutoFill Destination:=Range("B5:B" & mainf + 4), Type:=xlFillDefault
    Range("B5:B" & mainf + 4).Select
    Selection.AutoFill Destination:=Range("B5:O" & mainf + 4), Type:=xlFillDefault
 
 
---------------------------------------------------------------------------------------------------------
 
Pour comprendre, j'ai un rapport d'activité xls qui me donne pour chaque visite sur un doc, une ligne avec le nom du groupe et le nom du dossier parent principal
 
J'ai le nombre de groupes
J'ai le nombre de dossiers principaux,
J'ai construis mes formules avec la variable "group" mais je ne vois pas comment le faire avec ma variable mainf.
Parce que j'ai mis O pour l'instant, mais si jamais il se se rajoute des dossiers principaux, je l'ai dans le ***
 
En gros mmarle à tout compris :p
 
Merci !
 
 

n°2220768
Takama13
Posté le 25-02-2014 à 17:45:55  profilanswer
 

J'ai toujours pas compris où est le problème.
Comment tu détermines le nombre de colonne à copier ? C'est la dernière colonne non vide ?
Si c'est le cas, vois du côté de la fonction End

n°2220770
mechsangok​u
Posté le 25-02-2014 à 17:54:03  profilanswer
 

Copier les colonnes n'est pas un problème, parce que je suis passé de lignes a colonnes.
 
Exemple:
 
groupe1
groupe1
groupe25
groupe24
groupe34
groupe41
 
Avec ca, je me retrouve avec 5 groupes différents, donc je vire les doublons, je sort et je copie de A1 à A"x" puisque j'ai X
Je colle ca en transposant en colonne.
 
Mais du coup, comme faire pour appliquer une opération sur ces colonnes ?  
Je peux pas lui dire A1 à "X"1, ca marche pas.
 
Donc comment faire ?

n°2220776
Takama13
Posté le 25-02-2014 à 18:43:05  profilanswer
 

Code :
  1. LettreColonne = Split(Cells(1, numéro de colonne).Address(1, 0), "$" )(0)
 

Tu remplaces "numéro de colonne" par ton X


Message édité par Takama13 le 25-02-2014 à 18:44:41
n°2220798
mechsangok​u
Posté le 25-02-2014 à 22:51:39  profilanswer
 

Grand merci !
Je vais essayer ca !
 
Je maitrise mal le Cells, ca va venir (un jour...)

mood
Publicité
Posté le 25-02-2014 à 22:51:39  profilanswer
 

n°2220898
Arl Guhr
Posté le 27-02-2014 à 00:04:19  profilanswer
 

Ce ne serais pas ce genre de chose que tu cherche?

Code :
  1. Dim maplage as range
  2. With Feuil1 ' à adapter
  3.     Set maplage = .Range(.Cells(Firstcolumn, Firstline), .Cells(lastcolumn, lastline))
  4. End With


source modifiée


---------------
il s'appel le ronge me doute
n°2220914
mmarle
Posté le 27-02-2014 à 08:40:48  profilanswer
 

Bon j'avais bien compris son problème dès le départ.
 
Lui ce qu'il veut c'est de sélectionner une plage de colonnes en fonction d'une variable (un entier O par exemple)!
Il connait l'adresse de sa colonne de départ mais pas celle de la fin, enfin si, c'est l'adresse de la première colonne décalée de O.  
 
Bons codes mais il ne connait pas bien la classe "Cells".  

Citation :

LettreColonne = Split(Cells(1, numéro de colonne).Address(1, 0), "$" )(0)


Citation :

   Dim maplage as range
    With Feuil1 ' à adapter
        Set maplage = .Range(.Cells(Firstcolumn, Firstline), .Cells(lastcolumn, lastline))
    End With


 
On peut faire abstraction de la lettre de colonne!
 
On a un entier "O" représentant le nombre de groupe.
 

Citation :

Sh.Range(Columns(2), Columns(O + 1)).Select


Avec "Columns(2)" faisant référence à la colonne de départ soit "B" et "Columns(O + 1)" la colonne de fin!

n°2222581
mechsangok​u
Posté le 18-03-2014 à 17:29:39  profilanswer
 

Ca marche du feu de dieu
 
Merci à tous !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Opération sur colonne variable

 

Sujets relatifs
Copier données en ligne par colonne[RESOLU][mysql][auto_increment] comment reinitialiser un increment
[php] Stocker une variable dans l'URL.Récupérer des en têtes de colonne selon des classements(grande.valeur)
Affecter élément DOM à une variable[RESOLU][PowerShell] Pb Impor-csv et recuperation en variable
Variable et UserForm[Résolu] créer une variable quand on ne connait pas son contenu ?
Afficher la variable local d'une fonction dans une classe filleexclure colonne d'un prog /s awk
Plus de sujets relatifs à : Opération sur colonne variable


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR