EXCEL97

loulou1684 -  
 loulou1684 -
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
Configuration: Windows XP
Internet Explorer 6.0

27 réponses

  • 1
  • 2
  1. dandypunk Messages postés 838 Statut Membre 83
     
    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
  2. dandypunk Messages postés 838 Statut Membre 83
     
    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
  3. loulou1684
     
    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
  4. loulou1684
     
    Slt,

    CurrentRegion ne prend pas en compte les cellules coloriés.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. loulou1684
     
    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
  7. loulou1684
     
    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
  8. dandypunk Messages postés 838 Statut Membre 83
     
    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
  9. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    1. dandypunk Messages postés 838 Statut Membre 83
       
      Exact, j'avais oublié le &. Cela simplifie un peut le code.
      Merci pour lui.
      0
  10. loulou1684
     
    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
  11. dandypunk Messages postés 838 Statut Membre 83
     
    Désolé pour le pour lui il est vrai que tu avais écrit rouillée
    0
  12. loulou1684
     
    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
  13. loulou1684
     
    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
  14. loulou1684
     
    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
  15. loulou1684
     
    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
  16. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  17. loulou1684
     
    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
  18. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  19. loulou1684
     
    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
  20. loulou1684
     
    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
  • 1
  • 2