VBA Excel : 3 problèmes !!!
m-ln
-
m-ln -
m-ln -
Bonjour,
n'étant pas une pro de VBA (je me débrouille sur certaines choses...) je sollicite votre aide sur plusieurs points :
PB 1
dans une colonne, j'aimerais récupérer le résultat d'une opération réalisée sur deux colonnes.
cad :
j'ai une colonne avec une date de fin de contrat, une colonne avec une durée de préavis (en mois).
et dans une colonne, j'aimerais récupérer le résultat : date de fin de contrat-préavis
que faut-il rajouter pour gérer les cellules vides ?
Voici ce que j'ai fait:
Sub date_preavis()
Dim c As Range
Dim delais2 As Date
i = 2
For Each c In Range(("AA" & i), Range("AA" & i).End(xlDown))
delais2 = Range("N" & i).Value - (Range("O" & i).Value * 30) 'pour convertir le mois en jours
Range("AA" & i).Value = delais2
If Date = delais2 Then
MsgBox ("Attention preavis pour " & Cells(i, 1).Value)
End If
Exit For
Next
End Sub
PB2:
Lien hypertexte vers un fichier PDF.
A l'aide d'une macro j'ai attribué des liens hypertextes vers des fichiers PDF.
Cependant lorsque je clique sur le lien, l'application Adobe s'ouvre et se referme aussitôt sans avoir eu le temps de voir le fichier: où est le pb ?
PB 3:
Création d'un formulaire permettant l'ajout de données.
comment gérer les types (integer, date, long....) dans la saisie ?
ex : lorsque je saisis une donnée qui n'est pas un nombre : comment créer un message d'alerte (par ex : ceci n'est pas un nombre ?)
en fait quelle est la syntaxe pour comparer les types de données ?
comment imposer un format de date : dans mon cas, jj/mm/aaaa ?
J'espère avoir été assez claire et que quelqu'un pourra m'aider.
M-LN
n'étant pas une pro de VBA (je me débrouille sur certaines choses...) je sollicite votre aide sur plusieurs points :
PB 1
dans une colonne, j'aimerais récupérer le résultat d'une opération réalisée sur deux colonnes.
cad :
j'ai une colonne avec une date de fin de contrat, une colonne avec une durée de préavis (en mois).
et dans une colonne, j'aimerais récupérer le résultat : date de fin de contrat-préavis
que faut-il rajouter pour gérer les cellules vides ?
Voici ce que j'ai fait:
Sub date_preavis()
Dim c As Range
Dim delais2 As Date
i = 2
For Each c In Range(("AA" & i), Range("AA" & i).End(xlDown))
delais2 = Range("N" & i).Value - (Range("O" & i).Value * 30) 'pour convertir le mois en jours
Range("AA" & i).Value = delais2
If Date = delais2 Then
MsgBox ("Attention preavis pour " & Cells(i, 1).Value)
End If
Exit For
Next
End Sub
PB2:
Lien hypertexte vers un fichier PDF.
A l'aide d'une macro j'ai attribué des liens hypertextes vers des fichiers PDF.
Cependant lorsque je clique sur le lien, l'application Adobe s'ouvre et se referme aussitôt sans avoir eu le temps de voir le fichier: où est le pb ?
PB 3:
Création d'un formulaire permettant l'ajout de données.
comment gérer les types (integer, date, long....) dans la saisie ?
ex : lorsque je saisis une donnée qui n'est pas un nombre : comment créer un message d'alerte (par ex : ceci n'est pas un nombre ?)
en fait quelle est la syntaxe pour comparer les types de données ?
comment imposer un format de date : dans mon cas, jj/mm/aaaa ?
J'espère avoir été assez claire et que quelqu'un pourra m'aider.
M-LN
A voir également:
- VBA Excel : 3 problèmes !!!
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
2 réponses
Bonsoir,
Hé bé !!! tout ça ?
Tu aurais peut-être dû faire 3 post car trier les réponses ça va être coton pour toi, et dans 3 jours pas sûr que tout le monde lise tout pour savoir ce qui est résolu et ne l'est pas.
Allez, PB3 pour commencer:
Dans les contrôles de bases tu n'as guère que la zone de texte pour les saisies. Donc ça te retourne une chaine et rien d'autre. C'est à toi d'analyser la saisie, de voir si ça correspond à un nombre et le type (long, integer,..) sera celui que tu auras donné à ta variable. Tu as des fonctions de conversion comme CInt, CLng, CSng, CDate etc
Pour la date le mieux sans doute est d'ajouter un contrôle calendrier comme 'microsoft Date and Time Picker' ou équivalent. Clic-droit sur la boite des contrôles et 'contrôles supplémentaires...'. C'est plus simple pour l'utilisateur et pour toi, tu auras une date correcte et bien formatée.
PB1
Pas sûr d'avoir compris ta question car ça me parait simple:
If delais2 <>"" then ' ou test plus complet pour contrôler que ça corresponde bien à une date valide
ton traitement
end if
Par contre je ne te vois pas récupérer la date de fin de contrat...
et If Date = delais2 me parait plus que bizarre
Date est une fonction qui te retourne la date du jour, que tu compares à un nombre de jours...
Ca suffira pour ce soir ;-)
Bon courage
eric
Hé bé !!! tout ça ?
Tu aurais peut-être dû faire 3 post car trier les réponses ça va être coton pour toi, et dans 3 jours pas sûr que tout le monde lise tout pour savoir ce qui est résolu et ne l'est pas.
Allez, PB3 pour commencer:
Dans les contrôles de bases tu n'as guère que la zone de texte pour les saisies. Donc ça te retourne une chaine et rien d'autre. C'est à toi d'analyser la saisie, de voir si ça correspond à un nombre et le type (long, integer,..) sera celui que tu auras donné à ta variable. Tu as des fonctions de conversion comme CInt, CLng, CSng, CDate etc
Pour la date le mieux sans doute est d'ajouter un contrôle calendrier comme 'microsoft Date and Time Picker' ou équivalent. Clic-droit sur la boite des contrôles et 'contrôles supplémentaires...'. C'est plus simple pour l'utilisateur et pour toi, tu auras une date correcte et bien formatée.
PB1
Pas sûr d'avoir compris ta question car ça me parait simple:
If delais2 <>"" then ' ou test plus complet pour contrôler que ça corresponde bien à une date valide
ton traitement
end if
Par contre je ne te vois pas récupérer la date de fin de contrat...
et If Date = delais2 me parait plus que bizarre
Date est une fonction qui te retourne la date du jour, que tu compares à un nombre de jours...
Ca suffira pour ce soir ;-)
Bon courage
eric