Macro decallage cellule si
informatifien
Messages postés
781
Statut
Membre
-
informatifien Messages postés 781 Statut Membre -
informatifien Messages postés 781 Statut Membre -
Bonjour tout le monde,
bon me voilà avec une demande un peu tordu je vais donc tenter d’être le plus précis possible quand à ma demande et utiliser des exemples simples,j’ai en ligne 1 des dates qui se suivent, les week-end se mettent en couleur,en dessous j’ai 2 lignes identiques, qui s’importe depuis un autre onglet, que je vais appeler Prévisionnel (ligne 2) et Réel (ligne 3) ensuite j’ai un USF avec une ComboBox, un CommandButton et des OptionButton, donc je tape un numéro dans ma ComboBox, je coche une de mes OptionButton je clic sur mon CommandButton, là, ma macro cherche le numéro le trouve puis cherche la date du jour en ligne 1 et sélectionne la cellule de la ligne 3 (réel) dans la même colonne, puis selon l’OptionButton coché change le format de la cellule sélectionnée en vert ou rouge ou orange. Voilà le déroulement de ma macro actuelle, mais je voudrai que si par exemple je coche l’OptionButton qui formate rouge alors décaler toute la ligne d’une cellule, certes pour ça il suffirait d’insérer une cellule, mon problème c’est que je voudrai que quand en ligne 1 (date) il y ai un samedi que là, la ligne se décale de 2 et ce chaque fois qu’il y a un samedi j’espère que mon explication est compréhensible . . .si ce n’est pas le cas alors je ferai passer mon fichier.
Voici le code de USF :
Private Sub UserForm_Initialize()
datesaisie = Day(Now) & "/" & Month(Now) & "/" & Year(Now) ' j'inscris la date sans l'heure
NumofModif.SetFocus
End Sub
Sub modifier_Click()
Dim b As Long, a As Long, c As Variant
Dim d As Date
a = 1
b = NumofModif
c = 4
d = datesaisie
Do 'je cherche mon numero d'OF dans la colo A
a = a + 1
Loop Until Application.Cells(a, 1) = b
Do 'je cherche la date saisie (datesaisie) sur la ligne du N° d'OF trouvé
c = c + 1
Loop Until Application.Cells(a, c) = d
Application.Cells(a + 2, c).Select 'Je séléctionne la cell
If Recu = True Then
ActiveCell.Select
With Selection.Interior
.ColorIndex = 5
.Pattern = xlSolid
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders.LineStyle = xlContinuous
ElseIf NonReçu = True Then
ActiveCell.Select
With Selection.Interior
.ColorIndex = 45
.Pattern = xlSolid
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders.LineStyle = xlContinuous
ElseIf Retard = True Then
ActiveCell.Select
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders.LineStyle = xlContinuous
ElseIf Envoye = True Then
ActiveCell.Select
With Selection.Interior
.ColorIndex = 4
.Pattern = xlSolid
End With
With Selection.Borders(xlDiagonalDown)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders.LineStyle = xlContinuous
End If
Unload Modification
End Sub
bon me voilà avec une demande un peu tordu je vais donc tenter d’être le plus précis possible quand à ma demande et utiliser des exemples simples,j’ai en ligne 1 des dates qui se suivent, les week-end se mettent en couleur,en dessous j’ai 2 lignes identiques, qui s’importe depuis un autre onglet, que je vais appeler Prévisionnel (ligne 2) et Réel (ligne 3) ensuite j’ai un USF avec une ComboBox, un CommandButton et des OptionButton, donc je tape un numéro dans ma ComboBox, je coche une de mes OptionButton je clic sur mon CommandButton, là, ma macro cherche le numéro le trouve puis cherche la date du jour en ligne 1 et sélectionne la cellule de la ligne 3 (réel) dans la même colonne, puis selon l’OptionButton coché change le format de la cellule sélectionnée en vert ou rouge ou orange. Voilà le déroulement de ma macro actuelle, mais je voudrai que si par exemple je coche l’OptionButton qui formate rouge alors décaler toute la ligne d’une cellule, certes pour ça il suffirait d’insérer une cellule, mon problème c’est que je voudrai que quand en ligne 1 (date) il y ai un samedi que là, la ligne se décale de 2 et ce chaque fois qu’il y a un samedi j’espère que mon explication est compréhensible . . .si ce n’est pas le cas alors je ferai passer mon fichier.
Voici le code de USF :
Private Sub UserForm_Initialize()
datesaisie = Day(Now) & "/" & Month(Now) & "/" & Year(Now) ' j'inscris la date sans l'heure
NumofModif.SetFocus
End Sub
Sub modifier_Click()
Dim b As Long, a As Long, c As Variant
Dim d As Date
a = 1
b = NumofModif
c = 4
d = datesaisie
Do 'je cherche mon numero d'OF dans la colo A
a = a + 1
Loop Until Application.Cells(a, 1) = b
Do 'je cherche la date saisie (datesaisie) sur la ligne du N° d'OF trouvé
c = c + 1
Loop Until Application.Cells(a, c) = d
Application.Cells(a + 2, c).Select 'Je séléctionne la cell
If Recu = True Then
ActiveCell.Select
With Selection.Interior
.ColorIndex = 5
.Pattern = xlSolid
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders.LineStyle = xlContinuous
ElseIf NonReçu = True Then
ActiveCell.Select
With Selection.Interior
.ColorIndex = 45
.Pattern = xlSolid
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders.LineStyle = xlContinuous
ElseIf Retard = True Then
ActiveCell.Select
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders.LineStyle = xlContinuous
ElseIf Envoye = True Then
ActiveCell.Select
With Selection.Interior
.ColorIndex = 4
.Pattern = xlSolid
End With
With Selection.Borders(xlDiagonalDown)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders.LineStyle = xlContinuous
End If
Unload Modification
End Sub
A voir également:
- Macro decallage cellule si
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Excel cellule couleur si condition texte - Guide
- Proteger cellule excel - Guide
- Excel somme si couleur cellule - Guide
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
35 réponses
Bonjour ponpon,
je m'excuse pour le retard pris pour te répondre . . . .mais j'ai changé de place à mon boulot donc nouveau PC, nouvelle installation etc . .. désolé :(
je n'avais donc pas eu le temps de vérifier ta macro, je n'arrive pas à la faire marcher car partant de mon USF il ne trouve pas la ligne qui fonctionne pour ton test, mais à voir le décallage qu'il y a , c'est exactement ce qu'il me fallai, par contre comment dois je faire pour adapter ton code pour que celà fonctionne avec les bonnes lignes?
je m'excuse pour le retard pris pour te répondre . . . .mais j'ai changé de place à mon boulot donc nouveau PC, nouvelle installation etc . .. désolé :(
je n'avais donc pas eu le temps de vérifier ta macro, je n'arrive pas à la faire marcher car partant de mon USF il ne trouve pas la ligne qui fonctionne pour ton test, mais à voir le décallage qu'il y a , c'est exactement ce qu'il me fallai, par contre comment dois je faire pour adapter ton code pour que celà fonctionne avec les bonnes lignes?
Bonjour,
L’information est dans la procédure [Sub modifier_Click()] de la feuille [Modification] , note explicative [' [li=35] écrire sur la ligne 35 pour test] sur la ligne concernée.
Chercher cette ligne (presque en fin de procédure):
ActiveSheet.Paste Destination:=Cells(35, co + s + sd) ' [li=35] écrire sur la ligne 35 pour test
Il vous suffit de remplacer la valeur [35] par la variable [li] :
ActiveSheet.Paste Destination:=Cells(li, co + s + sd) ' [li=35] écrire sur la ligne 35 pour test
L’information est dans la procédure [Sub modifier_Click()] de la feuille [Modification] , note explicative [' [li=35] écrire sur la ligne 35 pour test] sur la ligne concernée.
Chercher cette ligne (presque en fin de procédure):
ActiveSheet.Paste Destination:=Cells(35, co + s + sd) ' [li=35] écrire sur la ligne 35 pour test
Il vous suffit de remplacer la valeur [35] par la variable [li] :
ActiveSheet.Paste Destination:=Cells(li, co + s + sd) ' [li=35] écrire sur la ligne 35 pour test
Salut, bon j'ai un problème j'ai toujours la même version d'ecxel sur mon nouveau poste mais quand j'ai voulu ouvrir le fichier, j'ai la dll de refedit manquante, mais seulement sur ce fichier. . . un collègue a eu le meme problème la semaine dernière ça viens apparement de variable dans le code qui poseraient problème. .. .donc il faut que je retélécharge le fichier depuis chez moi pffff c'est pénible , je suis désolé ponpon . . . .:( de pas pouvoir être plu réactif mais celà dis vu le résultat que tu as laissé pour test c'est bien ce que je cherché. . . .
Bonjour,
Etrange se problème car les procédures sont compatibles pour les versions 1997 et plus.
Est-il possible de connaitre le nom de la [DLL] manquante ?
Etrange se problème car les procédures sont compatibles pour les versions 1997 et plus.
Est-il possible de connaitre le nom de la [DLL] manquante ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
comme je l'ai dis un collègue a eu exactement le meme problème j'avai à l'epoque posté le problème ici:
https://forums.commentcamarche.net/forum/affich-15318660-excel-refedit-dll-manquant
j'avai eu une réponse mais qui ne me convenait pas vraiment. . . . et pour cause un peu trop radicale à mon gout.
comme je l'ai dis un collègue a eu exactement le meme problème j'avai à l'epoque posté le problème ici:
https://forums.commentcamarche.net/forum/affich-15318660-excel-refedit-dll-manquant
j'avai eu une réponse mais qui ne me convenait pas vraiment. . . . et pour cause un peu trop radicale à mon gout.
bonjour
Le problème sur le contrôle RefEdit avec un objet UserForm a des explications d'origine :
https://support.microsoft.com/fr-fr/help/213776 (traduction automatique)
Si tu as cette erreur avec la DLL "REFEDIT.DLL" présente dans ..\Microsoft Office\OFFICE..\, selon ta version, c'est sans doute un souci dans le registre que tu peux corriger (avec les précautions d'usage !!!) avec :
menu démarrer , exécuter :
regsvr32 "C:\Program Files\Microsoft Office\OFFICE11\REFEDIT.DLL"
en mettant bien sûr la bonne version de ton poste.
Lorsque l'on touche au registre, c'est l'utilisateur qui prend le risque et l'assume.
On peut aussi éviter d'utiliser ce contrôle avec un inputbox type 8 : chacun choisit...
Le problème sur le contrôle RefEdit avec un objet UserForm a des explications d'origine :
https://support.microsoft.com/fr-fr/help/213776 (traduction automatique)
Si tu as cette erreur avec la DLL "REFEDIT.DLL" présente dans ..\Microsoft Office\OFFICE..\, selon ta version, c'est sans doute un souci dans le registre que tu peux corriger (avec les précautions d'usage !!!) avec :
menu démarrer , exécuter :
regsvr32 "C:\Program Files\Microsoft Office\OFFICE11\REFEDIT.DLL"
en mettant bien sûr la bonne version de ton poste.
Lorsque l'on touche au registre, c'est l'utilisateur qui prend le risque et l'assume.
On peut aussi éviter d'utiliser ce contrôle avec un inputbox type 8 : chacun choisit...
Salut, gbinforme merci pour l'info, ton inputbox remplace quel controle? les combobox ? ou textebox?
pour ta ligne de commande je l'ais tester comme ecrit dans le post dont j'ai mi le lien message 25 mais sans résultat . . .
pour ta ligne de commande je l'ais tester comme ecrit dans le post dont j'ai mi le lien message 25 mais sans résultat . . .
par contre j'ai du nouveau j'ai le fichier en zip donc j'ai supprimé l'autre, je dézzipe de nouveau j'arrive à lancer la macro mais j'ai une erreur : "erreur de compilation projet ou bibliothèque introuvable" et ce, à la ligne :
sd = 3 ' valeur du saut samedi / dimanche
pensant que c'est un problème de variable non déclarée je la déclare . . . sd as long
je remet la macro en lecture et re le meme message mais cette fois sur: CutCopyMode = False enfin seulement sur cutcopymode. . . .
Je ferme mon fichier et là quand je le réouvre c'est à ce moment là qu'il bug avec la DLL, je viens de faire deux fois la manipulation en supprimant le fichier et en le redezzipant. . .le problème est seulement sur ce fichier . . . .:s etrange n'est ce pas :((
sd = 3 ' valeur du saut samedi / dimanche
pensant que c'est un problème de variable non déclarée je la déclare . . . sd as long
je remet la macro en lecture et re le meme message mais cette fois sur: CutCopyMode = False enfin seulement sur cutcopymode. . . .
Je ferme mon fichier et là quand je le réouvre c'est à ce moment là qu'il bug avec la DLL, je viens de faire deux fois la manipulation en supprimant le fichier et en le redezzipant. . .le problème est seulement sur ce fichier . . . .:s etrange n'est ce pas :((
Bonjour,
La version que j’ai mise à disposition au poste 18 le 25 novembre fonctionne correctement.
Je constate qu’il n’y a aucun bouton de commande dans le fichier.
Comment déclenchez-vous les procédures ?
Juste pour voir, essayer cette version pour voir si l’erreur se reproduit : http://www.cijoint.fr/cjlink.php?file=cj200912/cijd8Jyv63.xls .
La version que j’ai mise à disposition au poste 18 le 25 novembre fonctionne correctement.
Je constate qu’il n’y a aucun bouton de commande dans le fichier.
Comment déclenchez-vous les procédures ?
Juste pour voir, essayer cette version pour voir si l’erreur se reproduit : http://www.cijoint.fr/cjlink.php?file=cj200912/cijd8Jyv63.xls .
bonjour
.le problème est seulement sur ce fichier . . . .:s etrange n'est ce pas
L'étrange relève d'un autre domaine que l'informatique car ce qui serait considéré comme étrange en informatique c'est surtout l'erreur humaine qui le provoque et probablement que ton classeur n'est pas tout net et comporte des données, des formules et/ou du code qui ne sont pas corrects.
.le problème est seulement sur ce fichier . . . .:s etrange n'est ce pas
L'étrange relève d'un autre domaine que l'informatique car ce qui serait considéré comme étrange en informatique c'est surtout l'erreur humaine qui le provoque et probablement que ton classeur n'est pas tout net et comporte des données, des formules et/ou du code qui ne sont pas corrects.
certe gbinforme je suis complétement d'accord j'ai surement un problème dans le code mais lequel ? ? ? . . . ? ? ? :)
Bonjour, oui j'ai essayé les 2 derniers qu'il a posté les 2 pose le meme problème . . .je pense que c'est le code qui pose problème sur ma version d'ecxel (2002) ou je fais une erreur en modifiant le code quand la macro s'arrete sur certaines variables du code de ponpon . . .
Bonjour,
C’est parfait (bonjour Le Pingou et merci), comme j’ai neutralisé mon code dans la version du poste 30, cela veut dire que le problème ne vient pas de mon code.
C’est parfait (bonjour Le Pingou et merci), comme j’ai neutralisé mon code dans la version du poste 30, cela veut dire que le problème ne vient pas de mon code.
une question que voulez-vous dire par "neutraliser le code" ? verouillé par mot de passe?
ah et euuuh oups pardon j'ai commi une erreur je n'ai pas testé ce dernier fichier du post 30 mille excuses . . .j'ai eu une petite confusion, je teste ç a ce soir et vous tiens au courant excusez moi (ponpon et le pingou)
et je n'ai pas voulu dire que le code lui meme pose problème mais les modif que j'y fais . . . mais bon là j'ai fais une erreur donc il faut que je teste le fichier du post 30 pour savoir ce qu'il en est.
Encore merci pour tous vos efforts messieurs.
ah et euuuh oups pardon j'ai commi une erreur je n'ai pas testé ce dernier fichier du post 30 mille excuses . . .j'ai eu une petite confusion, je teste ç a ce soir et vous tiens au courant excusez moi (ponpon et le pingou)
et je n'ai pas voulu dire que le code lui meme pose problème mais les modif que j'y fais . . . mais bon là j'ai fais une erreur donc il faut que je teste le fichier du post 30 pour savoir ce qu'il en est.
Encore merci pour tous vos efforts messieurs.