3 réponses
Tu peux nommer ta cellule (Insertion, Nom, Définir)
Dans ta macro tu l'appelles en faisant
MaVariable = Range("CelluleNommee").value
Dans ta macro tu l'appelles en faisant
MaVariable = Range("CelluleNommee").value
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 :
Bonne soirée
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
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
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
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
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
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
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
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 :
- 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
merci de ton aide
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
Quand tu entends Avant dernière Colonne du fichier, tu sous-entends de ton tableau excel ou bien la colonne IU ?