Signaler

VBA : Macro selection d'une colonne d'un tableau

Posez votre question Pololalune 3Messages postés mardi 28 mars 2017Date d'inscription 21 avril 2017 Dernière intervention - Dernière réponse le 23 avril 2017 à 08:38 par michel_m
Bonjour à tous.

Je n'ai pas vu de post référantt à ma question, je me permet donc de poster ici :)

Je suis actuellement en cours de création d'une macro afin de facilité ( ou d essayer de faciliter ) un fichier.
Je souhaite prendre une colonne d'un tableau nommé "alcohol" pour la copier sur une autre page.

Mon problème est que ce tableau est en milieu de page (première ligne à 105 (avant j'ai un tableau soft, un tableau bière; et après tableau vin)

Sauf qu'il est possible que dans un mois celui ci commence à la 106 ou 107.
Le but est donc que la macro aille chercher d'elle même la colonne 18 de mon tableau alcohol.

Je pensais à :

Sheets("general").Select
' Table ("Alcohol") & Range("R").Select
' Range(Selection, Selection.End(xlDown)).Select
'Selection.Copy
'Sheets("Ecart").Select
'Range("C5").Select
'Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


Mais ça ne marche absoluement pas.

Par la suite je souhaiterai aussi faire cette même macro pour le vin.

La solution serait peut etre de faire en sorte que ma première ligne soit celle du tableau concerné mais une fois encore, vu que ce numéro de ligne risque de bougé ...

Si quelqu'un peu me renseigner çà serait top ! =)

bonne journée à tous

Polo
Utile
+0
plus moins
Bonjour,
Il serait plus facile de t'aider avec un aperçu de ton tableau...
De base, évites les Select qui sont source d'erreurs.
L'idée est de mettre une première ligne de titre à chaque tableau pour pouvoir les retrouvés dans le code.

Peux-tu le joindre via www.cjoint.com ?

Cordialement,
Donnez votre avis
Utile
+0
plus moins
Bonjour Perreet,

Merci pour ton retour,

Ci joint le lien : http://www.cjoint.com/c/GDtnCeEWAg6

Donc le but est de sélectionner la colone purchase du tableau Alcool (ci joint qui début en ligne 108) sachant que j'ai 6 tableau sur cette feuille et que je souhaite appliquer cela a tout les tableaux.

J'espère que c'est assez clair.


En déviant un peu du sujet initial :
Je ne m'y connais pas assez en VBA pour éviter le .select je pense.

Pourquoi une source d'erreur ? (j'utilise plein de fois cette "formule" dans ma macro :/)
Quelles sont les alertnatives?
Donnez votre avis
Utile
+0
plus moins
Bonjour,

Ton image est jolie mais ne sert à rien d'autant plus que ton exposé est particulièrement flou... On a ce que tu as écris et donc

cjoint n'aime pas les classeurs avec macros

Mettre le classeur sans données confidentielles en pièce jointe sur « mon-partage.fr »
et faire un clic droit-coller le raccourci dans votre message




on a le choix de l'embarras:
Par la suite je souhaiterai aussi faire cette même macro pour le vin.

par ex alcohol est le nom générique pour quels types de boissons (vin, biere,vodka.... etc) avec pour chaque boisson un tableau et où les met on
ou un seul tableau avec tous les types de boissons ?

prend du recul et sois précis complet dans ta réponse




Pololalune 3Messages postés mardi 28 mars 2017Date d'inscription 21 avril 2017 Dernière intervention - 21 avril 2017 à 14:49
Et bien Perreet avait besoin d'une image, je lui ai donc drop une image.
Je suis en stage et ne suis pas sur de pouvoir divulguer les informations. donc en effet le tableau est vide.

En fait chaque fin de mois je dois compter le stock que je renseigne en Stock final Stock et Stock final Bar, le cumul donnant le stock final de mon lieu de travail.

Ces "Stock finaux" deviendront les stocks initiaux du mois prochain, donc j'ai fais une macro pour copier coller les info dans les colonnes correspodantes.

Chaque fin de mois je compare aussi le stock Théorique alcool avec le stock compté.
Je souhaite donc que la macro aille chercher les infos toute seule dans la colone Stock final seulement pour le tableau nommé alcool.

La question est donc comment faire pour aller chercher une colone en particulier dans un tableau qui est nommé alcool.

Le tableau commence à la ligne 108 et fini ligne 198.

Cependant le nombre de ligne avant ce tableau est suceptible de changer donc faire une selection n'est pas fiable car il est possible que celui ci commence à la ligne 115 dans un mois et que la macro ne fonctionne donc plus.

Pour le moment je me contente de :
"
Range("R108").Select
Range(Selection, Selection.End(xlDown)).Select
"


Je pensais donc à un code qui dirait :

Selection colonne "R" du tableau "alcool".


est ce possible ?

J'espère avoir été plus clair cette fois.
Répondre
Donnez votre avis
Utile
-1
plus moins
Bonjour,
J'ai remarqué que la couleur de fond est différente sur la case de titre.
Donce tu peux parcourir ton tableau jusqu'à rencontrer cette couleur et le texte ALCOHOLS.


Dim i as integer
i=1
While(Cells(i, 1).Font.Background = RGB(255, 0, 0) And Cells(i, 1).Text = "ALCOHOLS")
i=i+1
Wend

la valeur de i sera la ligne que tu cherche.



A toi de trouver le code RGB de la couleur de fond...

Pour trouver toutes les valeurs pour les quelles cells(L,C).value <> ""

Cells(L, C) fait référence à une cellule à la ligne L et colonne C.

Tu devrais avoir les outils pour t'en sortir...

Bon courage
Donnez votre avis
Utile
-1
plus moins
Bonjour,

Heu...Pour Perreet: Pourquoi une boucle qui plus est sur des couleurs ?

Pour trouver la ligne Alcohols

Dim Ligne As Byte

Ligne = Sheets("general").Columns("A").Find(what:="alcohol", after:=Range("A1")).Row
'ou
Ligne = Sheets("general").Columns("A").Find(what:="alcohol", searchdirection:=xlPrevious).Row


Pour Pololalune
..."Et bien Perreet avait besoin d'une image, je lui ai donc drop une image.
Je suis en stage et ne suis pas sur de pouvoir divulguer les informations. donc en effet le tableau est vide. '...


Comme tu cites Perreet et uniquement lui parce que tu ne veux faire aucun effort pour fournir un classeur exemple sans données confidentielles, dém... toi pour la suite



Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !