Problème de selection de cellules
Bonjour à tous,
Nouveau en VBA mais avec un projet monstrueux, j'arrive à peu près à me débrouiller.
Néanmoins, je bloque sur une fonction.
Je demande la date de début, de fin et je remplis les cases avec une valeur.
dateDepart = InputBox("Quelle est la date de départ du test (numéro du jour) ?", "Date de départ")
dateFin = InputBox("Quelle est la date fin de test (numéro du jour) ?", "Date de fin")
priorite = InputBox("Quelle est la priorité (1, 2 ou 3)?", "Priorité")
Dim cellule As Range
For Each cellule In Range(Cells(ActiveRow, dateDebut), .Cells(ActiveRow, dateFin))
ActiveCell.Value = priorite
NextMa ligne For Each ne fonctionne pas. Je n'arrive pas à trouver de doc sur l'utilisation de Range avec des références "relatives".
Est-ce que quelqu'un peut m'expliquer ?
Merci.
Bonjour Arnaud, le forum,
Pas évident sans fichier, mais vois si ceci peut t'aider...CTRL + e pour lancer la macro...
Sub test()
If ActiveCell.Row = 1 Then Exit Sub
dateDepart = InputBox("Quelle est la date de départ du test (numéro du jour) ?", "Date de départ")
dateFin = InputBox("Quelle est la date fin de test (numéro du jour) ?", "Date de fin")
priorite = InputBox("Quelle est la priorité (1, 2 ou 3)?", "Priorité")
With Sheets("Feuil1") 'nom à adapter
.Range(.Cells(ActiveCell.Row, Val(dateDepart)), .Cells(ActiveCell.Row, Val(dateFin))) = priorite
End With
End SubCordialement,
Salut xorsankukai,
Merci pour cette réponse rapide. En effet, ta solution fonctionne très bien après adaptation.
Voici mon code complet :
Private Sub CommandButton2_Click()
' Nouvelle entrée dans le planing
If MsgBox("Positionnez-vous sur la ligne que vous désirez compléter." & Chr(10) & _
"Continuer ?", 36, "Confirmation") = vbYes Then
'Code à exécuter si OUI
ActiveCell.EntireRow.Select
Selection.Copy
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
numTest = InputBox("Quel est la référence du test ?", "Test Reference")
Cells(ActiveCell.Row, 1).Select
ActiveCell.Value = numTest
dateDepart = InputBox("Quelle est la date de départ du test (numéro du jour) ?", "Date de départ")
dateFin = InputBox("Quelle est la date fin de test (numéro du jour) ?", "Date de fin")
priorite = InputBox("Quelle est la priorité (1, 2 ou 3)?", "Priorité")
With Sheets("PLANNING")
.Range(.Cells(ActiveCell.Row, Val(dateDepart) + 1), .Cells(ActiveCell.Row, Val(dateFin) + 1)) = priorite
End With
End If
End SubJ'ai tout de même 2 questions :
- Pourquoi ajouter
If ActiveCell.Row = 1 Then Exit Sub en début de code ? Ma feuille active étant la feuille courante, pourquoi ajouter
With Sheets("PLANNING")Re,
Merci pour le retour,
- Pourquoi ajouter
If ActiveCell.Row = 1 Then Exit Sub
Dans mon exemple, les dates étant en ligne 1, c'était pour éviter d'exécuter la macro si mon ActiveCell était sur cette ligne.
Donc si la ligne de ma cellule active est 1, je quitte la procédure et je ne fais rien.
Ma feuille active étant la feuille courante, pourquoi ajouter
With Sheets("PLANNING")
Question de préférence, j'aime bien préciser sur quelle feuille agir, cela évite les erreurs si l'exécution de la macro est appelée depuis un autre onglet....à toi de voir...peut-être pas utile dans ton cas...
Bonne continuation,
Merci beaucoup pour tes réponses. Nous autres débutants n’avons pas toujours les réflexes des pros !!
Merci de nous épauler et partager votre savoir.
Arnaud.