Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Vba remplissage cellules à partir d'un userform

CorinneR

XLDnaute Nouveau
Bonjour,
je travaille sur un petit fichier pour essayer de gérer le parcellaire et l'assolement pour du maraîchage.
Je bloque sur la recherche de la cellule (intersection parcelle/planche/n°semaine)
Pourriez-vous m'aider ?
Ci-joint un capture écran
Merci pour votre aide
Corinne
 

Pièces jointes

  • Assolement.JPG
    81.6 KB · Affichages: 42

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Corinne,
Un premier jet "sans filet"
VB:
Option Explicit
Private Sub CommandButton1_Click()
'Noms utilisés : SemaineDébut,SemaineFin,Parcelle,Planche,Culture
Dim IndexSemDeb, IndexSemFin, Derlig, L
On Error GoTo Fin:
IndexSemDeb = Application.Match(Val(UserForm1.SemaineDébut), Range("2:2"), 0)   ' Repère du début
IndexSemFin = Application.Match(Val(UserForm1.SemaineFin), Range("2:2"), 0)     ' Repère de la fin
Derlig = Range("B65500").End(xlUp).Row
For L = 3 To Derlig
    If Cells(L, 2) = UserForm1.Parcelle And Cells(L, 3) = Val(UserForm1.Planche) Then Exit For  ' Cherche Parcelle/Planche
Next L
' Met en couleurs ( aleatoires ! ) la plage trouvée
Range(Cells(L, IndexSemDeb), Cells(L, IndexSemFin)).Interior.Color = RGB(Int(255 * Rnd()), Int(255 * Rnd()), Int(255 * Rnd()))
Cells(L, IndexSemDeb) = Culture     ' Inscrit la culture désirée.
Fin:
End Sub
Private Sub CommandButton2_Click()
    Unload UserForm1
End Sub
Sans vérification si les semaines de début existent ou non,
Les parcelles doivent être entrées Pxx, et sans vérification si elles existent ou non.
Les couleurs utilisées sont aléatoires. ( avec les OGM, de toute façon, on ne sait plus )
 

Pièces jointes

  • Essai assolement.xlsm
    19.8 KB · Affichages: 7

sylvanu

XLDnaute Barbatruc
Supporter XLD
Si pendant la fenêtre de saisie, alors Annuler.
Si après avoir fait OK alors le mieux est de d'effacer dans le tableau, car il n'y a pas de mémorisation de l'action faite.
Je pense que c'est faisable mais ça doit être complexe.
Faites un nouveau post, peut être que quelqu'un aura une solution à vous proposer.
Ou changer de stratégie.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
C'est très simple puisque toute la macro qui est événementielle est dans Feuil1.
La seule modification que vous ayez à faire concerne la plage cible, qui est ici :
VB:
If Not Intersect(Target, Range("D3:M30")) Is Nothing Then
il vous faut donc remplacer "D3:M30" par votre plage réelle.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…