Bonjour à la communauté,
je tente de mettre au point une macro qui
1) recherche une plage au moyen de la valeur de de deux combobox2 contenant des dates
2) la copie dans la feuille "feuil1"
3) après la copie de cette plage, ajouter sur la première cellule en dessous de la plage le mot "Test"
Tout se passe sauf si je veux ajouter le point 3, j'ai beau tenter des méthodes variées (utilisation de variables, de boucles, de "cherche la première/dernières non vide", les conditionnelles...), le mot "test" se positionne dans la feuille contenant la base de données, et non pas la feuille où ont été copiées les données.
J'ai recréé le plus simplement possible les conditions d'utilisation dans le fichier ci-joint
- 1 userform
- 1 bouton sur feuil1
- une feuille "Armelle" contenant des données
Merci par avance à celui qui se penchera sur cette problématique ; également aux autres, toute critique constructive d'optimisation de ce code est également la bienvenue en ces lieux, je suis très très jeune utilisateur du VBA)
je tente de mettre au point une macro qui
1) recherche une plage au moyen de la valeur de de deux combobox2 contenant des dates
2) la copie dans la feuille "feuil1"
3) après la copie de cette plage, ajouter sur la première cellule en dessous de la plage le mot "Test"
Tout se passe sauf si je veux ajouter le point 3, j'ai beau tenter des méthodes variées (utilisation de variables, de boucles, de "cherche la première/dernières non vide", les conditionnelles...), le mot "test" se positionne dans la feuille contenant la base de données, et non pas la feuille où ont été copiées les données.
Private Sub CommandButton11_Click()
Dim i As Integer
Dim j As Integer
Dim MyCell As Range
Dim MyCell2 As Range
Sheets(ComboBox3.Value).Activate ' on active la feuille portant le nom du gestionnaire qui a été sélectionné
For i = 3 To 360 ' définition des paramètres de la boucle i (on commence en A3 et on prévoit jusqu'à 357 dates rentrées)
If Range("A" & i).Value = CDate(ComboBox1.Value) Then ' cherche la cellule en A qui contient la date de début de recherche
Range("A" & i).Select ' selectionne la cellule
Set MyCell = Range("A" & i) ' cette cellule est maintenant appelée "MyCell"
For j = 3 To 360 ' définition des paramètres de la boucle j (on commence en A3 et on prévoit jusqu'à 357 dates rentrées)
If Range("A" & j).Value = CDate(ComboBox2.Value) Then ' si la cellule en A portant le numéro j contient la date de fin de l'extraction
Range("A" & j).Select ' alors on sélectionne la cellule (possibilité de l'appeler MyCell2 comme pour MyCell)
Sheets("feuil1").Range("A3", "H" & (j - i) + 3).Value = Range(MyCell, ActiveCell.Offset(0, 7)).Value ' on transfère les données de la plage dans la feuil1 en "réservant" les deux premières lignes
Sheets("feuil1").Range("A1", "H2").Value = Sheets(ComboBox3.Value).Range("A1", "H2").Value ' on rempli les deux premières lignes avec les 2 premières lignes de la base de données (Titres = plage sans donnée)
End If
Next j
End If
Next i
'------------------------TOUT EST OK JUSQUE LA-------------------------------
For i = 1 To 700 ' définition des paramètres de la boucle i ( on balaye de A1 à A700 pour avoir jusqu'à 700 dates extraites de la base de données )
If Sheets("feuil1").Range("A" & i) Is Nothing Then ' si la cellule en A portant le numéro de ligne i est vide
Sheets("feuil1").Range("A" & i).Select ' alors on la sélectionne
End If
Next i
ActiveCell = "test" ' la cellule active prend la valeur "test"
End Sub
J'ai recréé le plus simplement possible les conditions d'utilisation dans le fichier ci-joint
- 1 userform
- 1 bouton sur feuil1
- une feuille "Armelle" contenant des données
Merci par avance à celui qui se penchera sur cette problématique ; également aux autres, toute critique constructive d'optimisation de ce code est également la bienvenue en ces lieux, je suis très très jeune utilisateur du VBA)
Pièces jointes
Dernière édition: