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
Next

Ma 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...

4arnaud.xlsm (15.59 Ko)
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 Sub

Cordialement,

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 Sub

J'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.

Rechercher des sujets similaires à "probleme selection"