application goto avec variables

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

djvincebaya

XLDnaute Nouveau
bonjour,
je suis nouveau sur ce forum et je sollicite votre aide pour corriger ce code vba qui ne fonctionne pas
Voici mon problème : quand j'exécute le code suivant

Private Sub CommandButton2_Click()
Dim l As Integer 'n° ligne
Dim c As Integer 'n° colonne

If mois.Value = "JANVIER" Then l = 1: End
If mois.Value = "JANVIER" Then c = 1: End

If mois.Value = "FEVRIER" Then l = 1: End
If mois.Value = "FEVRIER" Then c = 23: End

If mois.Value = "MARS" Then l = 1: End
If mois.Value = "MARS" Then c = 45: End

If mois.Value = "AVRIL" Then l = 1: End
If mois.Value = "AVRIL" Then c = 67: End

If mois.Value = "MAI" Then l = 1: End
If mois.Value = "MAI" Then c = 89: End

If mois.Value = "JUIN" Then l = 1: End
If mois.Value = "JUIN" Then c = 111: End

If mois.Value = "JUILLET" Then l = 68: End
If mois.Value = "JUILLET" Then c = 1: End

If mois.Value = "AOUT" Then l = 68: End
If mois.Value = "AOUT" Then c = 23: End

If mois.Value = "SEPTEMBRE" Then l = 68: End
If mois.Value = "SEPTEMBRE" Then c = 45: End

If mois.Value = "OCTOBRE" Then l = 68: End
If mois.Value = "OCTOBRE" Then c = 67: End

If mois.Value = "NOVEMBRE" Then l = 68: End
If mois.Value = "NOVEMBRE" Then c = 89: End

If mois.Value = "DECEMBRE" Then l = 68: End
If mois.Value = "DECEMBRE" Then c = 111: End

'mois
Application.Goto (ActiveWorkbook.Sheets(1).Range(Cells(l + 6, c), Cells(l + 15, c + 1)))
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
With Selection.Font
.Name = "Times New Roman"
.Size = 26
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
ActiveCell.FormulaR1C1 = mois.Value

l'erreur d'exécution 1004 apparaît (erreur définie par l'application ou par l'objet).
C'est le code en rouge qui ne fonctionne pas mais je ne trouve pas d'où vient l'erreur.
Quelqu'un peut-il aider un débutant se débatant désespéremment dans le langage vba?
par avance merci.
Vince
 
Re : application goto avec variables

Bonsoir



Pourtant cela marche chez moi

(en déclarant en Long, ca peut régler ton problème )


Code:
Sub Test_OK()
Dim l As Long, c As Long
l = 1
c = 1
Application.Goto (ActiveWorkbook.Sheets(1).Range(Cells(l + 6, c), Cells(l + 15, c + 1)))
MsgBox Selection.Address
End Sub

Infos issues de la FAQ du forum
3 - Integer (%)

Les variables de type Integer peuvent avoir des valeurs comprises entre -32 768 et 32 767
 
Dernière édition:
Re : application goto avec variables

Bonjour Djvincebaya et bienvenue, salut Staple 🙂,
L'erreur 1004 survient quand mois.Value n'est pas un de tes 12 cas (soit mois n'est pas renseigné, soit c'est peut-être en minuscules, un blanc parasite, etc. car c = 0 et il n'y a pas de colonne 0...
En passant par un Select Case, tu éviteras ces inconvénients
Code:
Select Case [COLOR=red][B]Trim(UCase[/B][/COLOR](mois.Value))
Case "JANVIER"
l = 1
c = 1
Case "FEVRIER"
l = 1
c = 23
Case "MARS"
l = 1
c = 45
Case "AVRIL"
l = 1
c = 67
Case "MAI"
l = 1
c = 89
Case "JUIN"
l = 1
c = 111
Case "JUILLET"
l = 68
c = 1
Case "AOUT"
l = 68
c = 23
Case "SEPTEMBRE"
l = 68
c = 45
Case "OCTOBRE"
l = 68
c = 67
Case "NOVEMBRE"
l = 68
c = 89
Case "DECEMBRE"
l = 68
c = 111
[COLOR=red][B]Case Else[/B][/COLOR]
[B][COLOR=red]l = 0[/COLOR][/B]
[B][COLOR=red]c = 1[/COLOR][/B]
End Select
Trim supprime les blancs devant et derrière, UCase passe tout en majuscule, et le Case Else te permet de positionner ton curseur si aucun mois n'est sélectionné.
Bonne journée 😎
 
Re : application goto avec variables

bonsoir JNP et Staple 1600(et aux autres qui liront se message),
ça ne fonctionne toujours pas.
Je remet le code que j'ai écrit grace à l'enregistreur de macro.

Private Sub CommandButton2_Click()
Dim l As Long 'n° ligne
Dim c As Long 'n° colonne

Select Case Trim(UCase(mois.Value))
Case "janvier"
l = 1
c = 1
Case "février"
l = 1
c = 23
Case "mars"
l = 1
c = 45
Case "avril"
l = 1
c = 67
Case "mai"
l = 1
c = 89
Case "juin"
l = 1
c = 111
Case "juillet"
l = 68
c = 1
Case "août"
l = 68
c = 23
Case "septembre"
l = 68
c = 45
Case "octobre"
l = 68
c = 67
Case "novembre"
l = 68
c = 89
Case "décembre"
l = 68
c = 111
Case Else
l = 0
c = 1
End Select

'mois
Application.Goto (ActiveWorkbook.Sheets(1).Range(Cells(l, c + 6), Cells(l + 1, c + 15)))
MsgBox Selection.Address
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
With Selection.Font
.Name = "Times New Roman"
.Size = 26
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
ActiveCell.FormulaR1C1 = mois.Value

et j'ai toujours le même message d'erreur sur la même ligne de code (celle en rouge).HELP.
Si tu n'arrives pas à trouver la solution, je pense pas que je l'a trouverais, mais je continue à "gratter" quand même.
 
Dernière édition:
Re : application goto avec variables

Re 🙂,
Sans vouloir être méchant, si tu fais n'importe quoi, ça va pas le faire 😛...
1) Je te mets un UCase pour tout passer en majuscules, et toi, tu compares en minuscules 😕???
Select Case Trim(UCase(mois.Value))
Case "janvier"

2) Je te dit que ça plante parce que Cells n'aime pas le "0", et je te mets des valeurs pour le Case Else afin que c ne soit plus à 0, et toi, tu changes la plage avec l qui se retrouve à 0 😕????????????????????
Case Else
l = 0
c = 1
Range(Cells(l, c + 6), Cells(l + 1, c + 15)
En conclusion, utilise le code tel qu'indiqué, et tu éviteras de dire "ça marche pas"...
D'autre part, plutôt que le GoTo
ActiveWorkbook.Sheets(1).Range(Cells(l, c + 6), Cells(l + 1, c + 15)).Select
Ça fonctionne aussi (à condition que l <> 0...)
Bonne soirée 😎
 
Re : application goto avec variables

ça y est j'ai trouvé grace à ton aide Staple 1600
En fait la ligne de code correct est la suivante :
Application.Goto (ActiveWorkbook.Sheets(1).Range(ActiveWorkbook.Sheets(1).Cells(l, c + 6), ActiveWorkbook.Sheets(1).Cells(l + 1, c + 15)))

merci pour votre aide.Cette ligne va me raccourcir considérablement le code de ma macro !!!
bonne soirée
 
Re : application goto avec variables

ok en tout cas merci à tous les deux pour l'aide apporté à un pauvre débutant comme moi.🙂
Je n'y serais pas arrivé sans vous.
Pardon JNP, c'est la maladresse d'un débutant (ou l'ignorance 😉).
encore merci et bonne soirée.
cordialement.
Vince.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
463
Réponses
7
Affichages
620
Retour