Bonsoir à toutes et tous !
Je ne comprends pas pourquoi le programme dans le fichier en annexe ne me renvoie pas les bonnes dates.
Merci beaucoup pour votre aide !
Bonsoir à toutes et tous !
Je ne comprends pas pourquoi le programme dans le fichier en annexe ne me renvoie pas les bonnes dates.
Merci beaucoup pour votre aide !
Bonsoir,
La formule en B1 est la suivante :
A partir de là tu devrais pouvoir extrapoler pour la colonne C
Code : Sélectionner tout - Visualiser dans une fenêtre à part =SI(JOURSEM(A1;2)=3;A1+3;SI(JOURSEM(A1;2)=7;A1+4;"A VOIR"))
(A1;1) --> dimanche = 1 --> samedi = 7
(A1;2) --> lundi = 1 --> dimanche = 7
LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA
Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.
Ce que je souhaite, c'est que si c'est un mercredi, la date de la cellule de droite devienne le samedi et le mercredi si c'est un samedi.
Thx !!
Donc je pense quedoit être correct.
Code : Sélectionner tout - Visualiser dans une fenêtre à part =SI(JOURSEM(A1;2)=3;B1+3;SI(JOURSEM(A1;2)=6;A1+4;"A VOIR"))
lundi = 1, mardi = 2, mercredi = 3, jeudi = 4, vendredi = 5, samedi = 6, dimanche = 7
en effet, la 2ème condition est 6 et pas 7 (sorry)
donc en B1 ça donne...
bien vu
Code : Sélectionner tout - Visualiser dans une fenêtre à part =SI(JOURSEM(A1;2)=3;A1+3;SI(JOURSEM(A1;2)=6;A1+4;"A VOIR"))
LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA
Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.
OK, super.
Maintenant, toujours pour ce programme, mais rien à voir :
Quelle formule utiliser pour dire que :
Si B14=10, mettre une bordure intérieure ("croix") aux 10 cellules à droite, donc de C14 à L14.
Merci !
Ca marche, donc OK.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Option Explicit Sub test2() Dim c As Range If Cells(14, 2).Value = 10 Then For Each c In Range("c14:L14") With c.Borders(xlDiagonalDown) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With c.Borders(xlDiagonalUp) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With c.Borders(xlEdgeLeft).LineStyle = xlNone c.Borders(xlEdgeTop).LineStyle = xlNone c.Borders(xlEdgeBottom).LineStyle = xlNone c.Borders(xlEdgeRight).LineStyle = xlNone c.Borders(xlInsideVertical).LineStyle = xlNone Next c End If End Sub
Thx !
Juste pour économiser de l'encre , toutes les lignes se terminant par xlNone tu peux les supprimer, en gros pas besoin de lui dire "tu ne dois pas mettre de ligne"
Idem pour les lignes ColorIndex = xlAutomatic, si aucune précision quant à la couleur, il prendra par défaut la couleur "Auto"
LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA
Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.
Bien sûr, merci !!
Autre problème dans le fichier suivant.
Je ne comprends pas pourquoi le programme plante.
Merci pour l'aide !
SAlut
Normal, fais du pas a pas et tu verra que tu essais de mettre dans number le contenu d'une cellule vide ... hors le vide c'est pas numeric
En se qui concerne la macro en elle meme, tu devrais mettre tes indentement comme il faut par ce quela c'est illisible.
Une autre chose
Faudra m'expliquer a quoi ca sert ^^
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 number = Cells(ligne, colonne - 1).Value '????? If Cells(ligne, colonne - 1).Value = number Then '????? pas de gros risque que ce soit pas le cas
A++
Qwaz
MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
Ma page perso DVP
Dernier et Seul Tutoriel : VBA & Internet Explorer
Dernière contribution : Lien Tableau Structuré et UserForm
L'utilisation de l’éditeur de message
La cellule n'est pas vide ; colonne 2, ligne 2 = rien mais bien dans les autres cellules, donc le problème ne vient pas de là.
Pour la ligne avec "number", j'essaye de lui faire lire les valeurs introduites en colonne B (chaque fois décalées par rapport au cellules où il faut mettre des croix) et mettre un nombre de croix correspondant aux nombres introduits dans les colonnes.
THx
Re
Ben tu m'excuse mais dans le tableau que tu as joins les cellules sont vide et il suffit d'une cellule vide pour planter ta macro.
Pour ton explication, désolé mais je ne saisi pas, je sais que toi tu es "dedans" mais pas nous alors sois plus claire stp
Pour le bout de code dont je te parlais avant c'est comme si tu disais
y'a une des 2 ligne qui ait de trop ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 I = 8 If 8 = I Then
A++
Qwaz
MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
Ma page perso DVP
Dernier et Seul Tutoriel : VBA & Internet Explorer
Dernière contribution : Lien Tableau Structuré et UserForm
L'utilisation de l’éditeur de message
Très juste, désolé.
J'ai un peu modifié le fichier et il y a un résultat mais qui n'est pas le bon.
Je voudrais "simplement" qu'en fonction de la valeur entrée dans la colonne B, les cellules "en regard" reçoivent cette bordure intérieure en croix.
Je continue de mon côté.
Merci de m'aider !
Re
Deja fais des indentation comme il faut
Le probleme reste le meme avec ton If
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Sub test3() Dim c As Range, number As Integer Dim ligne%, colonne% For ligne = 2 To 23 For colonne = 3 To 12 number = Cells(ligne, colonne - 1).Value If Cells(ligne, colonne - 1).Value = number Then For Each c In Range("C2:L23") With c.Borders(xlDiagonalDown) .LineStyle = xlContinuous .Weight = xlThin End With With c.Borders(xlDiagonalUp) .LineStyle = xlContinuous .Weight = xlThin End With Next c End If Next colonne Next ligne End Sub
J'essais de comprendre.
+
MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
Ma page perso DVP
Dernier et Seul Tutoriel : VBA & Internet Explorer
Dernière contribution : Lien Tableau Structuré et UserForm
L'utilisation de l’éditeur de message
Re
Je devine pas trpo ce que tu veux faire, regarde ca si ca t'inspire
ca met des croix dans toutes les cases de la ligne dons la case b est renseignée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub test4() Dim CelCol As Range, C As Range For Each CelCol In Sheets(1).Range("B2:B23") 'on scann la colonne deja If CelCol.Value <> "" Then With Sheets(1).Range(Sheets(1).Cells(CelCol.Row, "C"), Sheets(1).Range("B1").End(xlToRight).Offset(CelCol.Row - 1, 0)) .Borders(xlDiagonalDown).LineStyle = xlContinuous .Borders(xlDiagonalDown).Weight = xlThin .Borders(xlDiagonalUp).LineStyle = xlContinuous .Borders(xlDiagonalUp).Weight = xlThin End With End If Next End Sub
[Edit]
Ou peut etre plutot ca
Cette fois ça met le nombre de croix en fonction de la somme....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub test4() Dim CelCol As Range, C As Range For Each CelCol In Sheets(1).Range("B2:B23") 'on scann la colonne deja If CelCol.Value <> "" Then With Sheets(1).Range(Sheets(1).Cells(CelCol.Row, "C"), Sheets(1).Range("B1").End(xlToRight).Offset(CelCol.Row - 1, -(10 - CInt(CelCol.Value2)))) .Borders(xlDiagonalDown).LineStyle = xlContinuous .Borders(xlDiagonalDown).Weight = xlThin .Borders(xlDiagonalUp).LineStyle = xlContinuous .Borders(xlDiagonalUp).Weight = xlThin End With End If Next End Sub
Mme Irma êtes vous parmi nous, vos lumières nous seraient utiles
[/Edit]
++
Qwaz
MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
Ma page perso DVP
Dernier et Seul Tutoriel : VBA & Internet Explorer
Dernière contribution : Lien Tableau Structuré et UserForm
L'utilisation de l’éditeur de message
Super, ça marche bien !
Sauf que je ne capte pas tout ;-)
J'aurais bien besoin de tes lumières !
Merci beaucoup !!!
SAlut
Quel code as tu gardé, et quel renseignement tu souhaite?
[Edit]
Je pense que c'est cette ligne qui te pose probleme
Alors on va decomposer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part With Sheets(1).Range(Sheets(1).Cells(CelCol.Row, "C"), Sheets(1).Range("B1").End(xlToRight).Offset(CelCol.Row - 1, -(10 - CInt(CelCol.Value2))))
CelCol représente une case contenant une des somme, déterminé en fonction de for each, donc on navigue de l'une après la suivante.
Pour selectionner une plage de cellule de "A1" à "A6", par exemple, je fais comme ca
On retrouve cette partie la dans la ligne du début ici
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Range(Range("A1"),range("A6"))
A la place de
Code : Sélectionner tout - Visualiser dans une fenêtre à part With Sheets(1).Range(Sheets(1).Cells(CelCol.Row, "C"), Sheets(1).Range("B1").End(xlToRight).Offset(CelCol.Row - 1, -(10 - CInt(CelCol.Value2))))j'ai
Code : Sélectionner tout - Visualiser dans une fenêtre à part Range("A1")
qui me permet de sélectionner la cellule qui se trouve sur la même ligne que CelCol, mais dans la colonne C, cette cellule est donc la 1ere de notre futur sélection.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Sheets(1).Cells(CelCol.Row, "C")
Ensuite a la place denous avons
Code : Sélectionner tout - Visualiser dans une fenêtre à part range("A6")
Procédons par étapes
Code : Sélectionner tout - Visualiser dans une fenêtre à part Sheets(1).Range("B1").End(xlToRight).Offset(CelCol.Row - 1, -(10 - CInt(CelCol.Value2)))
On se place sur la cellule "B1" et on fait la combinaison de touche (Fin + flèche droite), ce qui a pour effet de déplacer notre position jusqu'à la dernière case non vide de la ligne (puisque B1 était pleine).On pointe donc sur la dernière date en haut de ton fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Sheets(1).Range("B1").End(xlToRight)
Offset permet de donner un décalage en nombres de ligne et de colonne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 .Offset(CelCol.Row - 1, -(10 - CInt(CelCol.Value2)))
NbrLigne = CelCol.Row - 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part Offset(Nbrligne,Nbrcolonne)
Pour aller a la ligne ou se trouve CelCol il faut que nous nous décalions vers le bas. Nous somme a la ligne une il ne nous reste donc plus qu'a nous décaler du nombre de ligne ou se trouve CelCol moins une ligne (puisqu'on part de la ligne 1 ça crée un décalage)
NbrCol = -(10 - CInt(CelCol.Value2))
On regarde la valeur contenu dans CelCol, pas value mais value2, value2 ne prête pas attention au formatage de la cellule
Value = 1,00€ => value2 = 1
CInt permet de transtyper cette chaine de caractères en valeur numérique de type Integer (entier).
On retranche cette valeur a 10 (ce qui est maladroit de ma part d'ailleurs j'y reviendrais)
Puisqu'on a 10 colonne, on enlève le nombre de colonne qui doivent être cochées
Ainsi on va bien se décaler vers la gauche afin que notre sélection ne comporte le bon nombre de case
exemple 7 euro -> 7 cases à remplir.
10-7 = 3
Une fois que l'on pointe sur notre cellule tout au bout a droite, il faut bien que l'on se décale de 3 colonnes vers la gauche pour que notre sélection ne comporte plus que 7 cases.
Tu notera le moins tout au début pour bien se décaler dans le bon sens
NbrCol = -(10 - CInt(CelCol.Value2))
Ben voila normalement tu as tout compris
On sélectionne la 1ere cellule contenant la somme
On commence une sélection a la case juste a droite de la cellule contenant la somme
On vas tout au bout du tableau et on revient sur nos pas pour ne sélectionner que le nombre de cellules a cochées.
A++
Qwaz
[/Edit]
MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
Ma page perso DVP
Dernier et Seul Tutoriel : VBA & Internet Explorer
Dernière contribution : Lien Tableau Structuré et UserForm
L'utilisation de l’éditeur de message
Je ne comprends pas la commande suivante :
Je me demande aussi s'il est possible d'en faire une fonction plutôt qu'une procédure.
Code : Sélectionner tout - Visualiser dans une fenêtre à part With Sheets("Paiements (Série 11)").Range(Sheets("Paiements (Série 11)").Cells(CelCol.Row, "C"), Sheets("Paiements (Série 11)").Range("B1").End(xlToRight).Offset(CelCol.Row - 1, -(10 - CInt(CelCol.Value2))))
Je me rends compte que le programme peut réellement être intéressant s'il peut s'adapter aux modifications, donc "en cours de frappe".
En plus, comment pourrait-on (légèrement) adapter le code pour que le programme tienne compte des éventuelles dates qu'on ajouterait ?
--> Exemple : appliquer le range jusqu'à "M23" au lieu de "L23"
Thx !!!!
Rectification : OK pour le code.
1.) Reste mon problème de transformer la procédure en fonction.
2.) Si je mets "0" en B... (aucun paiement effectué), ça ne marche pas super.
MERCI ;-)
J'ai edité mon message precedent avec plein d'explication je vais en rajouter d'autre en editant celui ci, mais tu as deja du boulot avec l'autre
[Edit]
Comme dis dans mon autre message j'ai commis une maladresse
En effet ici contrairement au reste de mon code je n'est pas tenu compte du nombre de colonne qui peuvent varierEnvoyé par Qwazerty
Pour corriger ca il faut remplacer "10" par
On regarde le numero de la derniere colonne et on lui soustrait celui de celCol, aon pourait aussi lui soustraire tout simplement 2 je suis en train de pensais, puisque le tableau commence toujours a la colonne3
Code : Sélectionner tout - Visualiser dans une fenêtre à part (Sheets(1).Range("B1").End(xlToRight).Column - CelCol.Column)
Voila ca c'est fait, je regarde pour la valeur 0
Code : Sélectionner tout - Visualiser dans une fenêtre à part (Sheets(1).Range("B1").End(xlToRight).Column - 2)
[Edit2]
On va tout simplement ne pas executer le code si la valeur est "0"
J'ai juste rajouté And CelCol.Value2 > 0 a la condition If
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 For Each CelCol In Sheets(1).Range("B2:B23") 'on scann la colonne deja If CelCol.Value <> "" And CelCol.Value2 > 0 Then
[/Edit2]
A++
Qwaz
[/Edit]
MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
Ma page perso DVP
Dernier et Seul Tutoriel : VBA & Internet Explorer
Dernière contribution : Lien Tableau Structuré et UserForm
L'utilisation de l’éditeur de message
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager