Problème boucle for

Bonjour à tous,

Alors je vais essayer d'être bref et précis (ce qui risque dêtre dur!!!)

Mon problème est que j'ai un dossier(reports), qui contient différents dossiers avec des noms de services (accueil, administration,etc) et, ces sous dossier contiennent des fichier *.htm

* => fichier reportant tous sur l'ordinateur de la personne memoire vive, physique, processeur... .

Serait-il possible que tous soit retranscrit dans Excel avec une certaine mise en forme du style une feuille par service avec les différentes infos des personnes?

Ou une autre mise en forme.

Petite précision, c'est pour avoir un "gestionnaire de parc informatique" .

Cordialement,

Kris

Bonjour kris,

Pas sûr de pouvoir t'aider, mais il serait bien de voir à quoi ressemble un tel fichier *.htm. Si possible.

Re,

Toutes mes excuses pour ce retard, mais je vais faire un tout petit peu autrement.

Alors j'ai reussi à faire afficher chaque fiche de chaque personne en cliquant sur un bouton.

Et je compte utiliser MS Visio, mais pour cela il me faut recuperer certaine cellule de certaine feuille sur une autre feuille, afin de créer une connexion de données avec visio.

J'ai essayer cela:

Global Const CheminPersonne1 = "C:\Documents and setting\user\Bureau\Reports\"

Cell("B1").Sheets("CheminPersonne1" + Report2 Personne1.htm) = Cell("C1").Sheet("NewFeuille")

mais sans résultat.

En fait il me faut ce qu'il y à dans une cellule d'une feuille 'n' mais sans ouvrir cette feuille 'n'.

Est-il possible de faire cela?

Cordialement,

Kris

-- Jeu Aoû 05, 2010 3:55 pm --

Re une fois de plus je change mon fusil d'épaule :p!!!

Alors j'essaye de paser par 2 boucle For

mon pseudo code qui ne marche pas:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 14 To 1000
    For j = 2 To 1000
        Sheets("Feuil13").Cells("A".j) = Sheets("Feuil" + i).Cells("E26")
        Sheets("Feuil13").Cells("B".j) = Sheets("Feuil" + i).Cells("D10")
        Sheets("Feuil13").Cells("C".j) = Sheets("Feuil" + ii).Cells("E34")
    Next j
Next i
End Sub

Savez-vous ou sont mes erreurs?

Cordialement,

Kris

Bonjour kris,

Pour ton dernier code, essaie comme ça :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 14 To 1000
For j = 2 To 1000
Sheets("Feuil13").Cells(j,1) = Sheets("Feuil" & i).Cells("E26")
Sheets("Feuil13").Cells(j,2) = Sheets("Feuil" & i).Cells("D10")
Sheets("Feuil13").Cells(j,3) = Sheets("Feuil" & i).Cells("E34")
Next j
Next i
End Sub

bonjour,

ce qui m'étonne c'est que le dossier dont tu parles contient apparemment une page web par personne pour sa configuration informatique. Normalement on utilise une base de données accessible via une interface web et on crée une page d'affichage avec les requêtes souhaitées. Dans ce cas il serait plus facile d'accès aux infos directement à la source via un pilote de connection de données non ??

cordialement

Bonjour,

Alors j'ai essayer ton code vba-new mais il y à un problème, "l'objet n'appartient pas a la selection".

Meme en passant par Cange, a la place de SlelectionChange.

Une idée?

Cordialement,

Kris

Bonjour,

"l'objet n'appartient pas a la selection".

Lorsque tu as ce message, Excel ouvre une fenêtre avec des boutons "fin" et "déboggage". Si tu cliques sur "déboggage", excel te souligne en couleur l'instruction qui fait défaut.

Peux-tu la poster ici ?

Amicalement

Alors, elle se trouve sur la premiere ligne de copie:

Dsl je n'ai pas réussi à mettre de photo!!!

Private Sub Worksheet_Change(ByVal Target As Range)

For i = 14 To 1000

For j = 2 To 1000

Sheets("Feuil13").Cells(j, 1) = Sheets("Feuil" & i).Cells("E26")

Sheets("Feuil13").Cells(j, 2) = Sheets("Feuil" & i).Cells("D10")

Sheets("Feuil13").Cells(j, 3) = Sheets("Feuil" & i).Cells("E34")

Next j

Next i

End Sub

re,

essaie ceci plutôt

Sheets("Feuil13").Cells(j, 1) = Sheets("Feuil" & i).Range("E26")
Sheets("Feuil13").Cells(j, 2) = Sheets("Feuil" & i).Range("D10")
Sheets("Feuil13").Cells(j, 3) = Sheets("Feuil" & i).Range("E34")

Autres questions :

  • tu as 1000 feuilles dans ton fichier ??? Sinon explique ce qu'est la variable i dans ton code
  • quelle est le nom de la feuille où cette macro est mise ?
  • Tu déclenches bien la macro sur le changement dans la feuille en question ?

A te relire

Bonjour,

Alors même avec le Range, ca ne marche pas.

Non je n'ai pas 1000 feuilles, mais un nombre indeterminés car une par personne.

Le nom de ma feuille dans l'editeur c'est : " Feuil13(Données) ".

Quant au déclenchement de la macro ca serai bien que ca se fasse tout seul, si les feuille soit présente ou rajoutée après.

Ou même si ce n'est pas possible comme ca, avec un bouton ca ne serait pas plus mal.

Le "i" sert à implémenter les numéro de feuilles à partir de la numéro 14, et le "j" lui sert a implémenter le numero de ligne.

Cordialement,

Kris

re,

Quand tu dis automatiquement, tu veux que le code réagisse sur n'importe quel changement de cellule dans ta feuille 13 ou sur une cellule particulière ?

  • Ta feuille 13 se nomme bien feuille 13 ?
  • les autres feuilles se nomment bien "feuil" puis l'indice (1, 2, 3, ....) ?

Amicalement

re,

Ma feuille 13, a deux noms: => Feuil13(Données) => Feuil13 et Données.

C'est pareil pour toutes les feuilles => Feuil1(Nom) , Feuil2(nom2).....

Automatiquement, et bien en fait le mieu serait surement de passe par un bouton que je mettrai sur la première feuille.

Cordialement,

Kris

re,

Ma feuille 13, a deux noms: => Feuil13(Données) => Feuil13 et Données

ben non... le nom de ta feuille a un seul nom.

Ce que je dois connaitre c'est le nom de l'onglet et sa position dans le fichier (je suppose que c'est la position 13) En gros il y a 12 feuilles devant je suppose.

A te relire

Re,

Maintenant elle s'appelle "Données", car dans l'editeur du code il y à ecrit pour cette feuille là, Données(Données).

Kris

re,

Il ne faut pas changer les noms dans tes feuilles de code.

Comme je te l'ai dit avant, il faut que je connaisse la position de cette feuille "Donnees" dans ton fichier.

Donc là oublie VBA, reviens dans excel donne moi l'info de la position des feuilles.

Re,

Ah ok, excuse moi, alors oui elle est bien en 13ième position.

Kris

Re,

Vas dans VBA puis fais INSERTION / MODULE

Dans la fenêtre, colle le code ci-dessous :

Sub maj()
'Macro Dan
Dim i As Byte
Dim j As Integer
If Sheets.Count >= 13 Then
    For i = 13 To Sheets.Count
        For j = 2 To 1000
        With Sheets(13)
            .Cells(j, 1) = Sheets(i).Range("E26")
            .Cells(j, 2) = Sheets(i).Range("D10")
            .Cells(j, 3) = Sheets(i).Range("E34")
        End with
        Next j
    Next i
End If
End Sub
  • Ensuite vas sur la feuille où tu veux mettre un bouton
  • Dessine ton bouton par AFFICHAGE / BARRE d'OUTILS / FORMULAIRE (cela te montrera une boite de dialogue avec le nom de la macro MAJ).
  • Sélectionne la macro puis OK pour l'associer au bouton.

Amicalement

Edit : Remplacé 3 par 13 dans le code

Re,

J'ai fais ce que tu m'as dis, et merci bien

Cependant, existe t-il (une option peut etre) pour qu'il n'y ai pas 2 fois la même ligne?

Du style en comparant les lignes entrent-elles.

Kris

re,

Cependant, existe t-il (une option peut etre) pour qu'il n'y ai pas 2 fois la même ligne

Pour te répondre il faudrait comprendre ce que tu fais et surtout avoir un exemple de fichier représentatif de ce que tu dois faire.

A te relire

Bonjour Dan,

Alors j'ai refais un petit fichier xls, avec seulement 3 feuilles qui font exactement ce que mon "gros" fichier fait, mise à part le fait que dans ma feuille données il me faudrai qu'une ligne, qu'il n'y ai pas de redondance.

Je te joins le fichier.

16test.zip (18.74 Ko)

Cordialement,

Kris

Rechercher des sujets similaires à "probleme boucle"