Salut
je voudrais savoir qui peut m'aider sur comment faire une selection depuis une cellule active?
C'est à dire que m'a cellule active est en H4, je voudrais faire une selection de A4:H4, mais elle aurait pu très bien etre en H2 ou H1...
Merci
Salut
je voudrais savoir qui peut m'aider sur comment faire une selection depuis une cellule active?
C'est à dire que m'a cellule active est en H4, je voudrais faire une selection de A4:H4, mais elle aurait pu très bien etre en H2 ou H1...
Merci
Bonjour,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Sub test() x = ActiveCell.Row Range("A" & x & ":H" & x).Select End Sub
Bonjour
une variante
Abed_H
Code : Sélectionner tout - Visualiser dans une fenêtre à part Range(ActiveCell.Address & ":H4").Select
SAlut
@Moilou2: Evite le multiposting, si tout le monde fait ca on va etre submergé par des 100 enes de post par jour, d'autant plus qu'en charchant un peu tu avais la reponse dans le forum, y compris dans l'autre post ou je t'ai repondu.
@Abed_H: ton code va pas puisque tu gardes 4 (& ":H4")
J'utilise aussi souvent cette forme
A++
Code : Sélectionner tout - Visualiser dans une fenêtre à part range(cells(x,"A"),Cells(x,"H"))
Qwaz
MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
Ma page perso DVP
Dernier et SeulTutoriel : VBA & Internet Explorer
Dernière contribution : Lien Tableau Structuré et UserForm
L'utilisation de l’éditeur de message
Bonsoir Qwazerty
@Abed_H: ton code va pas puisque tu gardes 4 (& ":H4")
selon la demande de Moilou2 (C'est à dire que m'a cellule active est en H4)
j'ai suggéré cette syntaxe.
Bonne soirée
Abed_H
Re
La cellule active determine la ligne sur laquel il "travail"
cellule active en H4 -> Selection de A4 à H4
cellule active en H2 -> selection de A2 à H2 (pas H4 sinon tu selectionne les lignes de 2à4)
Je pense que tel et sa demande :p
[Edit]Mais il est vrai que j'ai un peu plus d'info a cause de son autre post[/Edit]
A++
bonne soirée
Qwaz
MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
Ma page perso DVP
Dernier et SeulTutoriel : VBA & Internet Explorer
Dernière contribution : Lien Tableau Structuré et UserForm
L'utilisation de l’éditeur de message
Re
Donc Moilou2 a deux solutions c'est à lui de faire son choix.
Bonne soirée Qwazerty
Abed_H
Re les gars!
Bon j'ai un peu avancé avec les solutions de tout le monde
Voila ce que j'obtient:
Mais au niveau de cette ligne j'ai un problème mais je crois qu'elle n'est pas placée où il faut ou ce n'est pas la bonne syntaxe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub colonne() Dim cel As Range For Each cel In Worksheets("PMP").Range(Worksheets("PMP").Range("H2"), Worksheets("PMP").Cells(Rows.Count, "H").End(xlUp)) If cel.Value = Date Then cel.Value = DateAdd("h", ActiveCell.Offset(0, -2), Date) Worksheets("PMP").Range("A" & cel.Row & ":H" & cel.Row).Copy Sheets("Feuil1").Cells(Rows.Count, "H").End(xlUp).Offset(1, -7) End If Next End Sub
J'effectue cette ligne de code pour que lorsque une cellule de la colonne "H" est égale à la date système, elle soit réincrémenté de la valeur se trouvent en case dans la colonne "F" et ensuite j'envoi la ligne dans un autre classeur!
Code : Sélectionner tout - Visualiser dans une fenêtre à part cel.Value = DateAdd("h", ActiveCell.Offset(0, -2), Date)
Merci de regarder et dire se que vous en pensez!
Merci![]()
En fait sa incrémente de la même valeur pour toutes les dates sa prend la valeur de réincrémentation de la premiere fois qu'il rencontre une cellule égale à la date système te sa le met aux autres dates aussi!
Bonsoir
une légère modification et ça marche..!
Abed_H
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Sub colonne() Dim cel As Range Set rngH = Sheets("PMP").Range("H2:" & Sheets("PMP") _ .Cells(Rows.Count, "H").End(xlUp).Address) For Each cel In rngH If cel.Value = Date Then Sheets("Feuil1").Cells(Rows.Count, "A").End(xlUp).Resize(1, 8) = _ Sheets("PMP").Range("A" & cel.Row & ":H" & cel.Row).Value End If Next End Sub
Ça ne marche pas!
je te passe mon fichier si tu veux regarder!
Moi je vais au lit je reviens demain!
Merci à toi
ps : J'ai pas réussi à envoyer le fichier! Tant pis on en reparle demain
Merci quand même
Bonjour,
Faudrait savoir ce que tu veux exactement parce que entre le post n°1 et le n°8, ya un monde de différence...
@+
Re à tous!
Bon désolé Fring si tu n'arrive pas à me suivre mais c'est parce que j'y vais par étape!
Je récapitule si tu veux
Bon ce que je veux c'est avoir un classeur qui sert de base dans lequel j'ai des instructions. Dans ce classeur j'ai une colonne "h" dans laquel il y a des dates. Je veux faire un test dans cette colonne.
Si la date est égale à la date système, alors je la réincrémente de la périodicité qui est en colonne "F" ensuite je copie la ligne de"A" à "H" et je la colle dans une autre feuille.
Pour le moment j'ai réussi à faire la comparaison par rapport à la date système dans la colonne "H", et à copier la ligne de "A" à "H" si elle est égale à la date système, puis à la coller dans une autre feuille.
Maintenant je ne veux pas que si je rappelle la macro qui fait la comparaison la ligne dont la date dans la colonne "H" été égale à le date système se copie et se colle une nouvelle fois, c'est pourquoi avant de la copier coller je veux d'abord réincrémenter de la valeur en "F"!
J'espere que j'ai été clair?!!!
Donc actuellement mon code est le suivant:
Mais le problème, c'est que actuellement ça ne marche pas comme je veux c'est à dire que ça me copie/colle bien mes lignes dont la date est égale à la date système, mais ça réincrément les dates toutes de la même durée alors que ce n'est pas ce que je veux puisque la périodicité n'est pas la même pour chaque ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Sub colonne() Dim cel As Range For Each cel In Worksheets("PMP").Range(Worksheets("PMP").Range("H2"), Worksheets("PMP").Cells(Rows.Count, "H").End(xlUp)) If cel.Value = Date Then cel.Value = DateAdd("h", ActiveCell.Offset(0, -2), Date) Worksheets("PMP").Range("A" & cel.Row & ":h" & cel.Row).Copy Sheets("Feuil1").Cells(Rows.Count, "H").End(xlUp).Offset(1, -7) End If Next End Sub
Je pense que sa serait plus simple de donner mon fichier mais je n'y arrive pas
Merci de m'aider si vous avez compris
Je viens de retester
ça incrémente bien mais ça met la même date pour toutes cases que j'ai copier/coller
Bon j'ai tout réduit!
Il reste que quelque lignes mais ça change rien au fonctionnement
Le code est dans le visual basic éditor de la PMP
SAlut
Alors déjà la patience est une vertu, les gens viennent ici sur leur temps libre, mais ils ont une vie, même si comme moins d'autres on une vie social proche du néant, on a quand même d'autre choses a faire, alors un peu de patience que diable
Pour ton problème, 2 causes
Ici c'est pas H2 mais H5
Code : Sélectionner tout - Visualiser dans une fenêtre à part For Each cel In Worksheets("PMP").Range(Worksheets("PMP").Range("H2"), Worksheets("PMP").Cells(Rows.Count, "H").End(xlUp))
Et ce pourquoi tu as toujours la même valeur erroné, tout simplement par ce que tu a mis un "ActiveCell" au lieu d'un "Cel"
Une autre chose mais qui n'est je pense pas vital, c'est d'utiliser Value2 au lieu de Value pour comparait une date et une valeur de cellule contenant une date, en effet value2 ne tient pas compte du formatage de la cellule.
Après modifs de ton code ça donne çà :
Je me suis permis d'inverser les 2 lignes contenues dans la boucle comme ça tu gardes l'info de la date de la dernière intervention sur la machin, mais tu es seul juge de ce qui convient de faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 For Each cel In Worksheets("PMP").Range(Worksheets("PMP").Range("H5"), Worksheets("PMP").Cells(Rows.Count, "H").End(xlUp)) If cel.Value2 = Date Then '1erment on copi cette ligne dans la feuil1 Worksheets("PMP").Range("A" & cel.Row & ":h" & cel.Row).Copy Sheets("Feuil1").Cells(Rows.Count, "H").End(xlUp).Offset(1, -7) 'ensuite on donne a la case H de PMP ca nouvelle date d'intervention cel.Value = DateAdd("h", cel.Offset(0, -2).Value, Date) End If Next
A++
Qwaz
MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
Ma page perso DVP
Dernier et SeulTutoriel : VBA & Internet Explorer
Dernière contribution : Lien Tableau Structuré et UserForm
L'utilisation de l’éditeur de message
merci beaucoup
Désolé de pas etre patient j'éviterai de recommencer
je testerai plus tard je te dis si ça marche. Merci
@+
Bonjour Moilou2
je t'envoie ton fichier modifié voir Feuil1 clic sur le bouton et tu observes
Amicalement Abed_H
Super ta soluce qwazerty! Merci aussi à toi Abel_H!
Bon j'ai maintenant fini ma première étape de raisonnement à savoir toute la partie Test,Coi/Colle et incrémentation.
J'ai donc ma macro quoi me permet de faire le travail.
Je donne la macro complete pour ceux que sa intéresse:
Maintenant que j'ai effectuer ce raisonnement il va falloir que je passe à ma deuxième phase pour ceux qui me suive depuis le début, je souhaite en faite maintenant que le classeur PMP qui est en fait ma base reste fermé et que le copier coller qui se faisait jusqu'a maintenant en feuille 1 du classeur PMP aille se faire maintenant dans un autre classeur.
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 Sub colonne() Dim cel As Range For Each cel In Worksheets("PMP").Range(Worksheets("PMP").Range("H5"), Worksheets("PMP").Cells(Rows.Count, "H").End(xlUp)) If cel.Value2 = Date Then '1erment on copi cette ligne dans la feuil1 Worksheets("PMP").Range("A" & cel.Row & ":h" & cel.Row).Copy Sheets("Feuil1").Cells(Rows.Count, "H").End(xlUp).Offset(1, -7) 'ensuite on donne a la case H de PMP ca nouvelle date d'intervention cel.Value = DateAdd("h", cel.Offset(0, -2).Value, Date) End If Next End Sub
Je vais donc travailler avec une structure OLE DB Microsoft Jet! Je pense que c'est la facon la plus simple.
Je vais essayer de faire quelque chose et si quelqu'un à une solution plus simple ou si vous n'êtes pas d'accord!
Merci à vous![]()
Donc pour situer un peu se que je vais expliquer je vais situer le contexte.
J'ai donc 2 classeurs : -PMP -->C'est celui avec les instructions et les dates
-Alertes-->C'est celui ou je doit venir coller les lignes
PMP-->Nom de la feuille PMP
Alertes-->Nom de la feuille Alerte
Je veux donc que le classeur PMP reste fermé et que quand j'ouvre le classeur Alertes, la macro que l'on a définit auparavant:
Aille faire sont test dans le classeur PMP qui est fermé et que les lignes ou la date est égale à la date système vienne se coller dans la Feuille "Alertes", du classeur "Alertes".
Code : Sélectionner tout - Visualiser dans une fenêtre à part Sub Colonne()
Dans un premier temps il faut déja que je modifie la macro précédente
Pour qu'elle n'aille plus coller dans la "feuille1" du classeur "PMP", mais dans la feuille "Alertes" du classeur "Alertes".
Code : Sélectionner tout - Visualiser dans une fenêtre à part Sub Colonne()
J'ai donc penser à reformuler la macro de la façon suivante:
Les modif que j'ai effectuées sont en rouge!
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 Sub colonne() Dim cel As Range For Each cel In Workbook("PMP").Worksheets("PMP").Range(Worksheets("PMP").Range("H5"), Worksheets("PMP").Cells(Rows.Count, "H").End(xlUp)) If cel.Value2 = Date Then '1erment on copi cette ligne dans la feuil1 Workbook("PMP").Worksheets("PMP").Range("A" & cel.Row & ":h" & cel.Row).Copy Workbook("Alertes").Sheets("Alertes").Cells(Rows.Count, "H").End(xlUp).Offset(1, -7) 'ensuite on donne a la case H de PMP ca nouvelle date d'intervention cel.Value = DateAdd("h", cel.Offset(0, -2).Value, Date) End If Next End Sub
Dites moi déja si cette partie est OK?!
Ensuite j'ai adopté la structure OLE DB Microsoft Jet et pour le momment j'obtient le résultat suivant, mais je ne sais pas comment exprimer ma requête je ne vais pas coller la macro ci-dessus à l'endroit ou j'ai marqué requête si?
La partie en rouge est une partie que j'ai pris dans un exemple mais je ne sais pas trop quoi effacer donc j'ai préferé vous la laisser!
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
28
29
30
31
32
33
34
35
36 Sub Alerte() Dim Cn As ADODB.Connection Dim Fichier As String Dim NomFeuille As String, texte_SQL As String Dim Rst As ADODB.Recordset 'Définit le classeur fermé servant de base de données Fichier = "C:\Documents and Settings\mamman qu'on aime\Bureau\PMP.xls" 'Nom de la feuille dans le classeur fermé NomFeuille = "PMP" Set Cn = New ADODB.Connection '--- Connection --- With Cn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & Fichier & _ ";Extended Properties=Excel 8.0;" .Open End With '----------------- 'requête. texte_SQL = "SELECT * FROM [" & NomFeuille & "$]" Set Rst = New ADODB.Recordset Set Rst = Cn.Execute(texte_SQL) 'Ecrit le résultat de la requête dans la cellule A2 Range(Worksheets("Alertes").Range("A2")).CopyFromRecordset Rst '--- Fermeture connexion --- Cn.Close Set Cn = Nothing End Sub
J'attend vos conseils merci beaucoup d'avance![]()
Partager