[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

  1. 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
    1. 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
    2. 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
    3. 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
    4. 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
    5. jeremac > onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention  
       
      de mon tableau excel
      0
  2. aquarelle Messages postés 7181 Date d'inscription   Statut Modérateur Dernière intervention   1 311
     
    Bonsoir,
    Peux-tu indiquer quelle est la ligne sur laquelle cette cellule se situe toujours ?
    A+
    0
  3. aquarelle Messages postés 7181 Date d'inscription   Statut Modérateur Dernière intervention   1 311
     
    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
    1. 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
    2. 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
    3. 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
    4. 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
    5. 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