[vba-excel] déclaration constante

jeremac -  
onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je voudrais situer et déclarer comme constante une cellule qui se trouve à l'avant dernière colonne de mon tableau , je ne peux pas le faire statiquement car le tableau peut être différent, je voudrais prendre toujours cette cellule qui sera placé toujours à l'avant dernière colonne, dois - je passer par une boucle qui testera si il existe encore des colonnes ou y a t-il une autre solution.

merci de votre aide

3 réponses

onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   120
 
Tu peux nommer ta cellule (Insertion, Nom, Définir)

Dans ta macro tu l'appelles en faisant

MaVariable = Range("CelluleNommee").value
0
jeremac
 
merci pour ta réponse mais ça ne me convient pas vraiment dans mon cas, car dans le cas on je rajoute des valeurs apres ma dernière colonne, cela ne marchera plus

merci de ton aide
0
onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   120 > jeremac
 
Meme si tu rajoutes des valeurs, la cellule restera nommée et tu pourras toujours y accéder de cette manière, sinon peux-tu nous en dire plus sur cette cellule : elle est sur l'avant-derniere colonne, mais sur une ligne précise ? A-t-elle un contenu particulier ?
0
jeremac > onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention  
 
mais ce qui m'interesse c'est une cellule de l'avant dernière colonne du fichier, alors elle peut changer toute le temps d'un fichier à un autre
même si je rajoute des colonnes , je veux qu'il me prenne toujours cette celulle qui sera TOUJOURS SUR LA MEME LIGNE ET TOUJOURS SUR LAVANT DERNIERE COLONNE DU FICHIER
0
onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   120 > jeremac
 
Elle est toujours sur la même ligne, on progresse ...

Quand tu entends Avant dernière Colonne du fichier, tu sous-entends de ton tableau excel ou bien la colonne IU ?
0
jeremac > onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention  
 
de mon tableau excel
0
aquarelle Messages postés 7181 Date d'inscription   Statut Modérateur Dernière intervention   1 304
 
Bonsoir,
Peux-tu indiquer quelle est la ligne sur laquelle cette cellule se situe toujours ?
A+
0
aquarelle Messages postés 7181 Date d'inscription   Statut Modérateur Dernière intervention   1 304
 
Voici une macro à adapter, dans mon exemple, je considère que le tableau démarre à partir de la 1ère ligne de la colonne A et que la cellule variable se situe toujours sur la dernière ligne de ton tableau dans l'avant dernière colonne :
Sub SelectionCellVariable()
Dim x As Long
Dim y As Long
x = Range("A1").End(xlToRight).Column
y = Range("A1").End(xlDown).Row
Cells(y, x).Offset(0, -1).Select
End Sub


Bonne soirée
0
jeremac
 
merci pour ta réponse mais j'avais essayé de faire une boucle pour trouver la colonne en question puis mettre la valeur dans une variable
mais ça ne marche pas trop
ça me dit "application defined or object defined error"
le debug souligne la ligne que j'ai mis en gras

merci de ton aide

Sub run()
Set wrksheet = ActiveWorkbook.Worksheets.Add
wrksheet.Name = "data"

Dim toto1 As Integer
Dim toto2 As Integer
Dim colonne_total As Integer

x = 1 'colonne
y = 8 'ligne

While ActiveWorkbook.Sheets("Pivot Solutions").Cells(x, y).Value <> "Grand Total"
x = x + 1
'on est dans la bonne colonne
Wend

colonne_total = x

toto1 = ActiveWorkbook.Worksheets("Pivot Solutions").Cells(colonne_total, 29).Value
'on utilise l'info de toto

toto2 = ActiveWorkbook.Worksheets("Pivot Solutions").Cells(colonne_total - 6, 29).Value


ActiveWorkbook.Sheets("data").Cells(colonne_total, 29).Value = "l'info qu'on veut ajouter dans la cellule en question"


End Sub
0
onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   120 > jeremac
 
La syntaxe de Cells est Cells(Ligne, Colonne), vu que tu cherches une colonne tu dois incrémenter ton y et non ton x.

Dans la situation que tu donnes, tu incrémentes ton X (donc les lignes) et Excel ne parvient pas à trouver "Grand total" dans H1 (cellule de départ avec X=1 et Y=8), incrémente le X, ne le trouve pas en H2 .... jusqu'à arriver en H65536 et générer une erreur
0
jeremac > onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup pour ta réponse, en effet j'avais inversé ligne, colonne.
J'ai une dernière question , je voudrais rechercher à l'aide d'une boucle toutes les colonnes de la ligne 8 ou il y marqué à la fin TOTAL
puiis je faire un truc comme ça ?
While ActiveWorkbook.Sheets("Pivot Solutions").Cells(x, y).Value <> "### Total"
y = y + 1
'on est dans la bonne colonne
Wend

merci de votre aide
0
onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   120 > jeremac
 
Non, car :

- La boucle recherchera seulement ### Total, donc si dans une cellule de ta ligne tu as "Total Recall" ou "TOTAL, vous ne viendrez plus chez nous par hasard", ca ne sera pas pris en compte. De plus la comparaison est sensible à la casse, si tu as bien ### TOTAL dans une cellule, ca ne fonctionnera pas non plus car tu recherches ### Total

- La boucle s'arrêtera à la première occurence trouvée


Tu peux par contre essayer quelque chose dans ce genre :
    For Each Cellule In Rows(8).Cells
        If InStr(UCase(Cellule.Value), "TOTAL") Then
            MsgBox "Total trouvé en " & Cellule.Address
        End If
    Next


0
jeremac > onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention  
 
en fait j'ai oublié une contrainte
chaque chaque celulle est composé de MM/AAAA TOTAL
ex : 05/2008 TOTAL 06/2008 TOTAL 07/2008 TOTAL
10 20 30
quand il va parcourir le tableau comment lui faire stocker dans une variable la valeur de chacun de ces mois en les differenciant


encore merci de voter aide
0