Opération sur colonne variable - VB/VBA/VBS - Programmation
Marsh Posté le 24-02-2014 à 15:11:36
Salut,
Je viens de saisir un bout de code qui fonctionne, à toi de t'en inspirer.
Code :
|
Marsh Posté le 24-02-2014 à 16:01:51
Salut,
C'est aussi simple que ça :
Code :
|
Marsh Posté le 24-02-2014 à 19:30:50
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 |
En relisant le post suivant:
Citation : C'est aussi simple que ça : |
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!
Marsh Posté le 25-02-2014 à 17:17:16
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é )
'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
Merci !
Marsh Posté le 25-02-2014 à 17:45:55
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
Marsh Posté le 25-02-2014 à 17:54:03
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 ?
Marsh Posté le 25-02-2014 à 18:43:05
Code :
|
Tu remplaces "numéro de colonne" par ton X
Marsh Posté le 25-02-2014 à 22:51:39
Grand merci !
Je vais essayer ca !
Je maitrise mal le Cells, ca va venir (un jour...)
Marsh Posté le 27-02-2014 à 00:04:19
Ce ne serais pas ce genre de chose que tu cherche?
Code :
|
Marsh Posté le 27-02-2014 à 08:40:48
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 |
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!
Marsh Posté le 19-02-2014 à 23:05:35
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