Copier coller une date en ajoutant des jours avec conditions
Résolu laricci Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
laricci Messages postés 19 Date d'inscription Statut Membre Dernière intervention - 17 juin 2013 à 11:00
laricci Messages postés 19 Date d'inscription Statut Membre Dernière intervention - 17 juin 2013 à 11:00
A voir également:
- Copier coller une date en ajoutant des jours avec conditions
- Historique copier-coller android - Guide
- Copier coller pdf - Guide
- Comment copier une vidéo youtube - Guide
- Copier-coller - Accueil - Informatique
- Symbole clavier copier coller - Guide
4 réponses
Bonjour,
fais plutôt qcq chose dans ce genre :
if [A2] = "facile" then
Range("class_b")=Range("class_c")+2
elseif [A2] = "moyen" then
Range("class_b")=Range("class_c")+5
....
endif
Comme tu parles de date dans une cellule de type texte il y aurau peut-être des conversions à faire mais sans fichier exemple...
eric
fais plutôt qcq chose dans ce genre :
if [A2] = "facile" then
Range("class_b")=Range("class_c")+2
elseif [A2] = "moyen" then
Range("class_b")=Range("class_c")+5
....
endif
Comme tu parles de date dans une cellule de type texte il y aurau peut-être des conversions à faire mais sans fichier exemple...
eric
Bonjour Eric,
J'ai essayé de faire comme tu as dis, cela fonctionne parfaitement si je le fais pour chaque cellule à part mais quand je le fais pour toute la plage de cellule ça ne fonctionne pas.
Merci beaucoup pour ton aide, j'ai mis un exemple sur https://www.ct.com/?3Fnlqgkr08q
Si tu peux y jeter un coup d'oeil et me dire qu'est ce qui ne va pas, ça serait super ;)
Chaque colonne contient une plage de cellule nommée comme suit : Colonne A (class_a) Colonne B (class_b) Colonne C (class_c)
class_c contient les dates initiales et class_b les dates de class_c + X jours en fonction de class_a.
Merci d'avance et bonne journée
Cordialement
J'ai essayé de faire comme tu as dis, cela fonctionne parfaitement si je le fais pour chaque cellule à part mais quand je le fais pour toute la plage de cellule ça ne fonctionne pas.
Merci beaucoup pour ton aide, j'ai mis un exemple sur https://www.ct.com/?3Fnlqgkr08q
Si tu peux y jeter un coup d'oeil et me dire qu'est ce qui ne va pas, ça serait super ;)
Chaque colonne contient une plage de cellule nommée comme suit : Colonne A (class_a) Colonne B (class_b) Colonne C (class_c)
class_c contient les dates initiales et class_b les dates de class_c + X jours en fonction de class_a.
Merci d'avance et bonne journée
Cordialement
Bonjour,
je vois que tu as voulu utiliser l'évènement Change.
Tu veux recalculer C si A ou B change ? Dans ce cas c'est cellule par cellule ou il peut y avoir des collés de plusieurs cellules ?
Ou bien traiter toute la table en une fois ?
Les deux ?
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
je vois que tu as voulu utiliser l'évènement Change.
Tu veux recalculer C si A ou B change ? Dans ce cas c'est cellule par cellule ou il peut y avoir des collés de plusieurs cellules ?
Ou bien traiter toute la table en une fois ?
Les deux ?
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Bonjour,
C'est plutôt traiter toute la table en une fois, la valeur de A ne change pas mais si on rajoute des lignes ça doit être pris en considération.
Aussi j'aimerai bien que cela soit fait sans cliquer sur le bouton.
Je te remercie pour ta réactivité.
C'est plutôt traiter toute la table en une fois, la valeur de A ne change pas mais si on rajoute des lignes ça doit être pris en considération.
Aussi j'aimerai bien que cela soit fait sans cliquer sur le bouton.
Je te remercie pour ta réactivité.
dans Feuil1 :
Recalculé si tu actives une autre feuille ou par un double-clic en colonne A pour éviter de ralentir à chaque saisie.
Pense à recalculer avant de sauvegarder sinon tu auras oublié à la prochaine ouverture que ce n'est pas fait.
eric
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Column = 1 Then calcHeure End Sub Private Sub Worksheet_Deactivate() calcHeure End Sub Sub calcHeure() Dim derlig As Long, lig As Long, data As Variant derlig = Cells(Rows.Count, "A").End(xlUp).Row data = [A2].Resize(derlig, 3) For lig = 1 To UBound(data) Select Case data(lig, 1) Case "P2" data(lig, 3) = data(lig, 2) + 2 Case "P3" data(lig, 3) = data(lig, 2) + 8 Case "P4" data(lig, 3) = data(lig, 2) + 20 End Select Next lig [A2].Resize(UBound(data), UBound(data, 2)) = data End Sub
Recalculé si tu actives une autre feuille ou par un double-clic en colonne A pour éviter de ralentir à chaque saisie.
Pense à recalculer avant de sauvegarder sinon tu auras oublié à la prochaine ouverture que ce n'est pas fait.
eric
Bonjour,
Je tiens à te remercier cela fonctionne à merveille,
j'ai une autre petite question, j'ai une autre valeur qui peut venir sur la colonne A, c'est "P1" mais je veux que ça rajoute 4h,et je ne connais pas la syntaxe pour ajouter les heures.
Genre je dois rajouter:
Case "P1"
data(lig, 3) = data(lig, 2) + ?
Et s'il te plait est ce que le fait de double cliquer sur la cellule est un choix ou bien c'est difficile de le rendre simultané?
Merci b pour ton aide
Cordialement
Je tiens à te remercier cela fonctionne à merveille,
j'ai une autre petite question, j'ai une autre valeur qui peut venir sur la colonne A, c'est "P1" mais je veux que ça rajoute 4h,et je ne connais pas la syntaxe pour ajouter les heures.
Genre je dois rajouter:
Case "P1"
data(lig, 3) = data(lig, 2) + ?
Et s'il te plait est ce que le fait de double cliquer sur la cellule est un choix ou bien c'est difficile de le rendre simultané?
Merci b pour ton aide
Cordialement
est ce que le fait de double cliquer sur la cellule est un choix ou bien c'est difficile de le rendre simultané?
Oui c'était un choix pour ne pas tout recalculer à chaque saisie.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column < 3 Then
Application.EnableEvents = False
calcHeure
Application.EnableEvents = True
End If
End Sub
Si tu vois qu'il y a trop de lenteurs tu enlèveras.
Ajoute aussi en dernier Case :
eric
edit: dans le Worksheet_Change on peut ne recalculer que la ligne concernée, mais comme j'étais parti sur calculer l'ensemble suite à ta réponse au post 4 j'ai un peu zappé.
Mais là je m'absente, ça sera plus tard ou qcq'un d'autre.
erix
Oui c'était un choix pour ne pas tout recalculer à chaque saisie.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column < 3 Then
Application.EnableEvents = False
calcHeure
Application.EnableEvents = True
End If
End Sub
Si tu vois qu'il y a trop de lenteurs tu enlèveras.
Ajoute aussi en dernier Case :
Case Else data(lig, 3) = data(lig, 3)pour restaurer la date si la saisie dans A n'est pas connue.
eric
edit: dans le Worksheet_Change on peut ne recalculer que la ligne concernée, mais comme j'étais parti sur calculer l'ensemble suite à ta réponse au post 4 j'ai un peu zappé.
Mais là je m'absente, ça sera plus tard ou qcq'un d'autre.
erix
Bonjour,
J'espère ne pas trop te déranger avec mes questions, c'est très gentil de ta part le fait de m'avoir montré tout cela.
Je voudrai savoir si c'est possible de faire ces ajouts de jours mais en sautant les week end et jours fériés exemple. Genre, si j'ai le 21/06/2013 dans une P2 cela e au 25/06/2013 et non pas au 23/06/2013 par exemple. Je sais que c'est trop demander mais même un avis ou un conseil serait le bienvenu, je bloque sur ce truc depuis un bon bout de temps.
Merci d'avance
J'espère ne pas trop te déranger avec mes questions, c'est très gentil de ta part le fait de m'avoir montré tout cela.
Je voudrai savoir si c'est possible de faire ces ajouts de jours mais en sautant les week end et jours fériés exemple. Genre, si j'ai le 21/06/2013 dans une P2 cela e au 25/06/2013 et non pas au 23/06/2013 par exemple. Je sais que c'est trop demander mais même un avis ou un conseil serait le bienvenu, je bloque sur ce truc depuis un bon bout de temps.
Merci d'avance