EXCEL97

Fermé
loulou1684 - 4 févr. 2008 à 12:02
 loulou1684 - 22 févr. 2008 à 12:21
Bonjour,

Je suis rouillée question code, mais si vous m'expliquez ça peut revenir. Voilà j'ai une imputbox, qui demande le nombre de ligne utilisé (nombre), et je souhaiterai donc faire un range de A, nombre : IU nombre.... le coller c'est autre chose.

Moi j'avais pensé à ça , mais ça ne marche pas :

Range("(Cells(nombre, a).Value) : (Cells(nombre,iu).value")).Select


Le code que j'ai pour le moment c'est ça :
Range("A12:IU41").Select
Selection.Copy

Sheets("Synthèse").Select
Range("A12:IU41").Select
ActiveSheet.Paste
Range("a1").Select

Sheets("LS").Select
Range("a1").Select
Application.CutCopyMode = False

LOULOU

27 réponses

dandypunk Messages postés 831 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 11 septembre 2011 83
21 févr. 2008 à 21:36
Salut loulou je n'ai pas eu le temps de m'occuper de ton problème.

Qui plus est, Eriic s'occupait de toi.

A priori, tu n'est pas en RSO. Donc tu dois le simuler. A savoir: considérant les services TOTO, TITI, TATA qui doivent chacun inscrire leur planning dans le tableau "Synthèse"

Essaye de créer une feuille cachée avec une ligne qui récupère la dernière ligne inscrite.

Tu ajoutes un espace. La prochaine fois, le bouton ajouter le tableau se remettra en place. C'est difficile d'être vraiment clair, mais l'idée est là.

J'attend un fichier d'avancement, afin que nous ne nous "marchions pas dessus".

Rassure toi ceux qui aident font aussi cela e nplus de leur boulot.
1
dandypunk Messages postés 831 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 11 septembre 2011 83
4 févr. 2008 à 14:28
A la place de

Sheets("Synthèse").Select
Range("A12:IU41").Select
ActiveSheet.Paste
Range("a1").Select


Essayes

Worksheets("Synthèse").Paste Destination:=Worksheets("Synthèse").Range("A1") 'Pour coller à partir de A1
0
Bonjour,

Merci pour ton aide Dandypunk mais ce n'est pas ce que je veux. Ton code m'a aidé, et appris des choses.

En faite si tu veux, j'ai un tableau sur feuille 2, il tient sur les lignes A12 : Iu41. Et je voudrai changer ça, car si un jour il devait tenir sur 42 ?

Je voudrai le rendre variable. Ma solution du nombre est plus compliquée que je ne le pensais.

Aurais tu un moyen pour sélectionner les lignes utilisés sachant que comme c'est un planning, il y a des colonnes qui n'ont rien d'écrit mais une case coloré...et surtout je voudrai qu'il arrête la sélection des lignes quand il y a 2 lig d'affilé vide.

Aidez moi svp !!!

Loulou
0
Slt,

CurrentRegion ne prend pas en compte les cellules coloriés.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sub hide()
'A1:c50 correspond a ta plage de cellule que tu souhaite verifier

Range("A1:c50").Select


For Each o In Selection
If o.Value = "" Then
o.EntireRow.Hidden = True
End If
Next

End Sub

Je voudrai essayer autre chose, cacher les lignes vides en cliquant sur un bouton. Mais je souhaiterai qu'il ne cache que lorsqu'il y a 2 linges vides l'une au dessus de l'autre.

J'avais pensé rajouté au if : (O.value +1)="" then

Quand pensez vous ?? Car ça ne marche pas ?
loulou
0
dandypunk Messages postés 831 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 11 septembre 2011 83
5 févr. 2008 à 12:48
On va traiter les choses une par une.
Ta feuille ressemble à cela https://www.cjoint.com/?cfmTlKGpUK
mais jamais à cela https://www.cjoint.com/?cfmWfL0TtE
0
https://www.cjoint.com/?cfntNC6AS3

Dandypunk merci de ton attention

Pour mieux se comprendre, je t'ai mis sur cjoint un fichier rar car même en supprimant des onglets mon fichier est gros !!

Tu as le tableau 1 : synthèse
Tu as le tableau 2 : LS // service du pdg

Une colonne client, projet, travaux (description), R pour responsable, i pour intervenant et aprés le calendrier, mois et jour, et dans les cases on y met une couleur.

En fait , les couleurs correspondent :

Rouge : absence
bleu : travail confirmé au bureau
vert : rendez-vous confirmé en clientèle
jaune : tâche prévisionnelle (bureau ou clientèle)

Ensuite, on met "M" ou "A" dans la case si ne concerne que la 1/2 journée. (Certains colorient en hachuré pour le rendre plus visible)

Et donc pour différencier les projets et client en cours pour un service, ils espacent d'une ligne et donc dans ma sélection ça me gêne pour délimiter le tableau.

voilà j'espère qu'on se comprendra mieux

loulou
0
dandypunk Messages postés 831 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 11 septembre 2011 83
6 févr. 2008 à 20:36
Désollé d'avoir été si long à répondre, mais ces deux jous ont été très chargés pour moi. (Je ne vais pas me plaindre d'avoir des clients.)

1) Je crois avoir compris ce que tu désirais.
2) J'ai légèrement modifié ton code de Sub hide

Je te joint déjà le fichier modifié (.zip) https://www.cjoint.com/?cguA7YLQP2

Le code modifié se trouve dans le module 10 et dans ThisWorbook

1) J'ai pris une base de 41 comme demandé au départ, mais avec ton tableau qui va jusque 43, il suffira de modifier cette valeur
2) Le variables et constantes de type PUBLIC ne 'appliquent qu'au module en cours. L'idéal est donc de copier toutes tes macros dans un seul module, sinon, l'initialisation ne sera pas prise en compte.
3) Afin d'éviter, de cacher des lignes (procédure hide()), je vais essayer de m'inspirer de cela pour la sélection, dans le style iDerniereLIgnevalide; Je n'ai pas encore eu le temps de me pencher sur le problème.
4) Je serai absent de la toile jusque mardi, voire mercredi et je ne sais pas si demain j'aurai le temps.

En espérant que cela t'aura aidé, je reste à ta disposition.
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 250
6 févr. 2008 à 21:20
Bonsoir tout le monde,

je n'ai pas pris le temps de regarder les classeurs mais pour répondre à ta 1ère question tu peux te fabriquer ton range ainsi :
i=42
range("A12:IU" & i).cequetuveux

il suffit de concatener
eric
0
dandypunk Messages postés 831 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 11 septembre 2011 83
6 févr. 2008 à 21:22
Exact, j'avais oublié le &. Cela simplifie un peut le code.
Merci pour lui.
0
Pour elle !!

Oui en effet ça m'aide merci

Je vais voir ça aujourd'hui.

Je souhaite en effet que le nombre de ligne soit variables mais le mieux c'est que l'utilisateur sache combien il en a utilisé. Et je pense mettre un compteur, en bas de la première colonne, un count. et je prendrai ce chiffre comme repère pour tout !!

Je pense ça va marcher !! merci de vos aides, je pense pas avoir été clair, mais je mettrai le tableau une fois fini !!
0
dandypunk Messages postés 831 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 11 septembre 2011 83
7 févr. 2008 à 11:59
Désolé pour le pour lui il est vrai que tu avais écrit rouillée
0
Ce n'est pas grave !!

De ton code, je voudrai arriver à faire, que le compteur qui est notre information sur la sélection du nombre de ligne soit conservé et utilisé dans les autres codes pour tout le temps savoir le nombre de lignes.

Je ne sais plus comment, je faisais avant pour avoir cette donnée d'accessible à tout. Là où la procédure est appelé, on aura le icompteurligne ? Qu’en penses tu ?



Sub Selection_ls()
'
' Macro enregistrée le 07/02/2008 par
'
Dim bLignePrecedenteVide As Boolean
Dim iCompteurLigne As Integer
Dim sCelluleAVerifier As String

bLignePrecedenteVide = False

For iCompteurLigne = 15 To iLigneMax 'Les infos intéressantes commencent ligne 15

sCelluleAVerifier = ("A&iCompteurLigne")
Range(sCelluleAVerifier).Select

If (Selection.Value = "") And (bLignePrecedenteVide = False)
Then ‘ la cellule est vide et la ligne précédente non
bLignePrecedenteVide = True ' on passe que la ligne est vide pour le reste du code
' on continue d'incrémenter le compteur, car une seule ligne vide doit être comptée !
Else ‘ la cellule n’est pas vide et 'bLignePrecedenteVide est à vrai
If (Selection.Value = "") ‘ si la ligne est vide
Then 'bLignePrecedenteVide est donc vrai et fin sélection
IcompteurLigne = IcompteurLigne – 1 ‘ On enlève 1 au compteur pour enlever la deuxième ligne vide.
Else
bLignePrecedenteVide = False
End If

End If

Next
'
End Sub
0
J'exécute ce code pas à pas, et tout ce fait ok, le compteur s'arrête bien à 23, ce qui correspond bien à mon test mais en revanche le logiciel bug, comme si j'étais en boucle infernal. Peux tu m'aider ?

Sub Selection_ls()
'
' Macro enregistrée le 07/02/2008 par
'
Dim bLignePrecedenteVide As Boolean
Dim iCompteurLigne As Integer
Dim sCelluleAVerifier As String


bLignePrecedenteVide = False
iLigne_max_ls = 50

For iCompteurLigne = 15 To iLigne_max_ls 'Les infos intéressantes commencent ligne 15

sCelluleAVerifier = "A" + CStr(iCompteurLigne)
Range(sCelluleAVerifier).Select

If (Selection.Value = "") And (bLignePrecedenteVide = False) Then ' la cellule est vide et la ligne précédente non
bLignePrecedenteVide = True ' on passe que la ligne est vide pour le reste du code
' on continue d'incrémenter le compteur, car une seule ligne vide doit être comptée !
Else ' la cellule n'est pas vide et 'bLignePrecedenteVide est à vrai
If (Selection.Value = "") Then 'bLignePrecedenteVide est donc vrai et fin sélection
iCompteurLigne = iCompteurLigne - 1 ' On enlève 1 au compteur pour enlever la deuxième ligne vide.
Else
bLignePrecedenteVide = False
End If
End If

Next
'
End Sub
0
j'ai oublié je mets :

return iCompteurLigne

aprés icompteurligne = icompteurligne - 1

sinon je ne sortait pas effectivement

mais je ne sais plus voir même on peut dire pas, renvoyer une valeur !! j'ai honte !!

merci de votre aide
0
oublier ces deux derniers post !!

Grâce à ton aide dandypunk, je m'y suis remise.

reste comment on écrit ça :

Range("A"&i_ls:"iu"&i_ls).Select ça ne marche pas trop

loulou
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 250
8 févr. 2008 à 18:55
Bonsoir,

le : doit ête dans les ""
Range("A" & i_ls ":iu" & i_ls).Select

mais je te rappelle qu'au début tu voulais sélectionner A12:IUxx
Avec ta formule tu ne sélectionneras que la ligne i_ls

eric
0
Bonjour,

Oui au début j'avais besoin de ça. Mais maintenant pour les autres tableaux, qui se mettent aprés le premier, je ne peux plus savoir où cela se termine et où commencer le tableau .

merci mais ça ne fonctionne pas

Range("A & i_ls :IU & i_ls").Select
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 250
11 févr. 2008 à 21:10
Bonsoir,

Range("A" & i_ls & ":IU" & i_ls").Select

Mais vu que tu n'as qu'une variable i_ls tu ne selectionneras qu'une ligne

eric
0
bonjour

oui désolée, en fait j'ai été trop vite

Range("A" & i_ls & ":IU" & i_lsa").Select

il y a une deuxième variable !!

merci je vais tester !!!

loulou
0
rebonjour,

cela ne fonctionne pas, il me met message d'erreur: Erreur de compilation, attendu : séparateur de liste ou)

Range("A" & i_ls & ":IU" & i_lsa").select

si tu as une autre idée

merci de ton aide

loulou
0