[vba-excel] déclaration constante

Fermé
jeremac - 12 juin 2008 à 14:26
onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 - 16 juin 2008 à 10:25
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
A voir également:

3 réponses

onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120
12 juin 2008 à 14:41
Tu peux nommer ta cellule (Insertion, Nom, Définir)

Dans ta macro tu l'appelles en faisant

MaVariable = Range("CelluleNommee").value
0
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 mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120 > jeremac
12 juin 2008 à 16:19
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 mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008
12 juin 2008 à 16:39
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 mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120 > jeremac
12 juin 2008 à 16:44
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 mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008
12 juin 2008 à 16:47
de mon tableau excel
0
aquarelle Messages postés 7141 Date d'inscription dimanche 8 avril 2007 Statut Modérateur Dernière intervention 19 décembre 2024 1 303
12 juin 2008 à 20:30
Bonsoir,
Peux-tu indiquer quelle est la ligne sur laquelle cette cellule se situe toujours ?
A+
0
aquarelle Messages postés 7141 Date d'inscription dimanche 8 avril 2007 Statut Modérateur Dernière intervention 19 décembre 2024 1 303
12 juin 2008 à 20:55
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
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 mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120 > jeremac
13 juin 2008 à 14:48
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 mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008
13 juin 2008 à 16:38
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 mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120 > jeremac
13 juin 2008 à 16:50
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 mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008
13 juin 2008 à 17:14
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