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

lecture d'une variable issu d'un useform

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 !

fbertran

XLDnaute Nouveau
Bonjour,
Tout nouveau sur l’utilisation de macro (frais de 2 jours) je rencontre un problème.
En gros j’ai deux colonnes, une représentant les jours du mois durant les 12 mois, et l’autre représentant le numéro du mois auquel correspond le jour de la colonne d’à côté.
Je souhaiterais matérialiser par un 0 les jours de vacances dans une colonne à coté
J’ai fais un userform et dessus il y a 4 combobox, les 2 première représente le jour et le mois du début des vacances et les deux autres représente la fin.
L’idée de mon code est la suivante, je fais une boucle de 1 a 8760 (=nombre d’heure dans une année) et je pose un test avec une double condition. Des que la ligne de la colonne B = la valeur de ma combobox1 et que la ligne de la colonne C = la valeur de ma combobox2 alors je met un 0 sur la ligne correspondante dans une colonne C. Et ensuite je fais un tant que que la ligne de la colonne B <> la valeur de ma combobox3 et que la ligne de la colonne C <> la valeur de ma combobox4 je met des 0 sur les lignes correspondantes dans la colonne C.
Cependant j’arrive pas à imposer deux conditions.
Voici mon code :

Sub algo_vacances()

Dim Ligne As Integer
Dim i As Integer

With Feuil1
For Ligne = 1 To 8760
If Cells(Ligne, 5)=userform1.combobox1.Value and cells(ligne,6) = userform1.combobox2.value Then
Do While Not Cells(Ligne, 5) = userform1.combobox3.Value and Cells(Ligne, 6) = userform1.combobox4.Value
Cells(Ligne, 2).Value = 0
Ligne = Ligne + 1

Loop
End If
Next Ligne
End With
MsgBox ("finitoo")
End Sub
 
Re : lecture d'une variable issu d'un useform

Bonsoir fbertran, et bienvenue,

A la première lecture de ton code, m'apparaît une erreur :

L'instruction With...End With oblige à faire précéder d'un point les contrôles qui s'y rattachent.

Voici donc ton code modifié :

Code:
Sub algo_vacances()

Dim Ligne As Integer
Dim i As Integer

With Feuil1
For Ligne = 1 To 8760
If [COLOR="Red"][B].[/B][/COLOR]Cells(Ligne, 5)=userform1.combobox1.Value and [COLOR="Red"][B].[/B][/COLOR]Cells(ligne,6) = userform1.combobox2.value Then
Do While Not [COLOR="Red"][B].[/B][/COLOR]Cells(Ligne, 5) = userform1.combobox3.Value and [B][COLOR="Red"].[/COLOR][/B]Cells(Ligne, 6) = userform1.combobox4.Value
[COLOR="Red"][B].[/B][/COLOR]Cells(Ligne, 2).Value = 0
Ligne = Ligne + 1

Loop
End If
Next Ligne
End With
MsgBox ("finitoo")
End Sub

Espérant t'avoir aidé.

Cordialement.
 
Re : lecture d'une variable issu d'un useform

Allô!

Si je comprends bien l'utilisation du . , il remplace activesheet. 🙄

Perdrix

Bonjour Gelinotte,

Il remplace plus exactement le nom de la feuille mentionnée dans le With...End With : il peut s'agir de la feuille active (With ActiveSheet...End With), ou bien de n'importe quelle feuille (With Sheets("NomFeuille")..., ou encore de n'importe quel objet (With UserForm1..., With TextBox1..., etc).
Son utilisation simplifie l'écriture du code en évitant de réécrire le nom de l'objet à chaque appel.

Bonne journée.
 
Dernière édition:
- 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
5
Affichages
612
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
889
Réponses
7
Affichages
326
  • Résolu(e)
Microsoft 365 DATEDIF
Réponses
11
Affichages
207
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…