Parcourir la longueur d'une colonne
Emile
-
Emile -
Emile -
Bonjour,
Tout est dans le titre
Je récupère des données dans des onglets d'autre fichiers et ce petit script fonctionne si on connait à l'avance le nombre de ligne et de colonne.
Ce que j'aimerais faire c'est partir d'une ligne exemple i = 8 d'une colonne j = 3 et quand ma colonne "j" n'a plus de valeur dans les cellules, s'arrêter.
Voilà, mon script qui fonctionne, si on connait la ligne jusqu'à laquelle on souhaite s'arrêter.
J'ai tenté ceci, mais même si je n'ai pas d'erreur, le traitement est incroyablement long.. Donc j'imagine que la syntaxe n'est pas bonne.
Merci d'avance pour votre aide.
Tout est dans le titre
Je récupère des données dans des onglets d'autre fichiers et ce petit script fonctionne si on connait à l'avance le nombre de ligne et de colonne.
Ce que j'aimerais faire c'est partir d'une ligne exemple i = 8 d'une colonne j = 3 et quand ma colonne "j" n'a plus de valeur dans les cellules, s'arrêter.
Voilà, mon script qui fonctionne, si on connait la ligne jusqu'à laquelle on souhaite s'arrêter.
Sub parcourir() Dim ws As Worksheet Dim monFichier As String Dim wb As Workbook Dim chemin As String chemin = ThisWorkbook.Path monFichier = Dir(chemin & "*.xlsx", vbNormal) For i = 8 To 93 'Jusqu'à la ligne 93 For j = 3 To 3 'sur la ligne du dessous je vais juste récupérer mes valeurs dans mes onglets. Cells(i - 4, j - 2).FormulaR1C1 = "='" & ThisWorkbook.Path & "\[" & monFichier & "]Feuil1'!R" & i & "C" & j Next Next End Sub
J'ai tenté ceci, mais même si je n'ai pas d'erreur, le traitement est incroyablement long.. Donc j'imagine que la syntaxe n'est pas bonne.
Sub parcourir() Dim ws As Worksheet Dim monFichier As String Dim wb As Workbook Dim chemin As String chemin = ThisWorkbook.Path monFichier = Dir(chemin & "*.xlsx", vbNormal) For p = 1 To Columns.Count n = WorksheetFunction.CountA(Columns(p)) For i = 8 To n For j = 3 To 3 Cells(i - 4, j - 2).FormulaR1C1 = "='" & ThisWorkbook.Path & "\[" & monFichier & "]Transient'!R" & i & "C" & j Next Next Next End Sub
Merci d'avance pour votre aide.
Configuration: Windows / Chrome 80.0.3987.132
A voir également:
- Parcourir la longueur d'une colonne
- Déplacer une colonne excel - Guide
- Trier une colonne excel - Guide
- Colonne word - Guide
- Formule somme excel colonne - Guide
- Figer une colonne excel - Guide
7 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
voyant ton code et ayant lu tes réponses complémentaires, je pense utile que tu expliques d'abord ce que tu veux faire, plutôt que d'ajouter chaque fois une information.
comme expliqué par f894009 (bonjour à lui), ton code ne récupère pas les données, il crée des liens. souhaites-tu récupérer les données, ou créer des liens?
ton code est incroyablement long car il est incroyablement mal écrit. le comble étant la boucle en p.
difficile de te faire une suggestion correcte si tu n'expliques pas ce que tu veux réaliser.
je crois deviner que tu veux chercher "Forum" sur la première ligne de l'onglet, et, qu'ensuite, tu veux travailler sur toutes les lignes de la colonne en dessous de "Forum", jusqu'à trouver une cellule vide. est-ce exact?
voyant ton code et ayant lu tes réponses complémentaires, je pense utile que tu expliques d'abord ce que tu veux faire, plutôt que d'ajouter chaque fois une information.
comme expliqué par f894009 (bonjour à lui), ton code ne récupère pas les données, il crée des liens. souhaites-tu récupérer les données, ou créer des liens?
ton code est incroyablement long car il est incroyablement mal écrit. le comble étant la boucle en p.
difficile de te faire une suggestion correcte si tu n'expliques pas ce que tu veux réaliser.
je crois deviner que tu veux chercher "Forum" sur la première ligne de l'onglet, et, qu'ensuite, tu veux travailler sur toutes les lignes de la colonne en dessous de "Forum", jusqu'à trouver une cellule vide. est-ce exact?
Bonjour,
For j = 3 To 3 sert a rien ou votre code n'est pas complet!
Vous ne recuperez pas les valeurs d'un autre fichier, vous faites un lien entre cellules
For j = 3 To 3 sert a rien ou votre code n'est pas complet!
Vous ne recuperez pas les valeurs d'un autre fichier, vous faites un lien entre cellules
Cette ligne me permet de récupérer les valeurs de la 3ème colonne de mon onglet "Feuil1" et "monFichier" représente un ensemble de fichier présent dans un dossier. Ma boucle parcourt chaque fichier et chaque onglet pour aller récupérer l'onglet "Feuil1".
Je cherche également au lieu d'aller chercher une colonne en fonction de sa position, parcourir l'onglet et dès qu'il trouve un nom de colonne exemple : "Forum" il récupère toutes les valeurs de Forum et les copie dans mon Fichier principale : avec cette ligne :
Peut-être que je m'y prends mal, mais c'est le moyen (fonctionnel) le plus simple que j'ai réussi à trouver jusqu'à maintenant.
Je cherche également au lieu d'aller chercher une colonne en fonction de sa position, parcourir l'onglet et dès qu'il trouve un nom de colonne exemple : "Forum" il récupère toutes les valeurs de Forum et les copie dans mon Fichier principale : avec cette ligne :
Cells(i - 4, j - 2).FormulaR1C1 = "='" & ThisWorkbook.Path & "\[" & monFichier & "]Feuil1'!R" & i & "C" & j Next
Peut-être que je m'y prends mal, mais c'est le moyen (fonctionnel) le plus simple que j'ai réussi à trouver jusqu'à maintenant.
Merci à tous les deux pour vos messages, je vais tacher d'être plus clair.
Mon code à l'heure actuelle fait des liens comme vous l'avez compris.
Ce lien me permet de récupérer les valeurs d'onglet dans des fichiers présents dans le même dossier de ma macro, dont l'objectif finale est de les afficher dans des tables à un endroit donnée.
Après ces liens sont convertis en données brutes et donc n'existe plus. Il ne reste que dans mes tables ces valeurs provenant des onglets cités précédemment.
Pour ce que je cherche à faire c'est récupérer les valeurs dans une colonne portant un nom précis dans mon onglet, exemple "Forum" dans l'onglet "Feuil1" et récupérer les valeurs de cette colonne jusqu'à ce la case soit vide.
Voilà, j'espère avoir été clair, je m'excuse encore une fois pour mes mauvaises explications.
Mon code à l'heure actuelle fait des liens comme vous l'avez compris.
Ce lien me permet de récupérer les valeurs d'onglet dans des fichiers présents dans le même dossier de ma macro, dont l'objectif finale est de les afficher dans des tables à un endroit donnée.
Après ces liens sont convertis en données brutes et donc n'existe plus. Il ne reste que dans mes tables ces valeurs provenant des onglets cités précédemment.
Pour ce que je cherche à faire c'est récupérer les valeurs dans une colonne portant un nom précis dans mon onglet, exemple "Forum" dans l'onglet "Feuil1" et récupérer les valeurs de cette colonne jusqu'à ce la case soit vide.
Voilà, j'espère avoir été clair, je m'excuse encore une fois pour mes mauvaises explications.
suggestion:
Private Sub parcourir() Dim csource As Workbook, chemin As String, nlig As Long, ncol As Long, monFichier As String Dim fsource As Worksheet, fdest As Worksheet, trouve As Range, chercher As String chercher = "Forum" chemin = ThisWorkbook.Path monFichier = Dir(chemin & "\*.xlsx", vbNormal) Set fdest = ActiveSheet Set csource = Workbooks.Open(chemin & "\" & monFichier) Set fsource = csource.Sheets("Feuil1") Set trouve = fsource.Rows(1).Find(chercher) If Not trouve Is Nothing Then ncol = trouve.Column nlig = 8 Do While fsource.Cells(nlig, ncol) <> "" fdest.Cells(nlig - 4, 1) = fsource(nlig, ncol) nlig = nlig + 1 Loop End If Call csource.Close End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Voici mon code complet. Je vais d'abord récupérer chaque nom de fichiers pour les mettre dans ma macro, en créant un nouvel onglet pour chaque fichier.
Ensuite je vais recopier le template d'un onglet déjà présent dans ma macro pour l'appliquer à chaque nouvel onglet créer.
Et c'est là qu'arrive l'étape de récupérer les valeurs de la colonne Forum de chaque Onglet et Fichiers du dossier pour les mettre les nouveaux onglets à un emplacement précis( qui est le même à chaque fois dans la macro).
Ensuite je vais recopier le template d'un onglet déjà présent dans ma macro pour l'appliquer à chaque nouvel onglet créer.
Et c'est là qu'arrive l'étape de récupérer les valeurs de la colonne Forum de chaque Onglet et Fichiers du dossier pour les mettre les nouveaux onglets à un emplacement précis( qui est le même à chaque fois dans la macro).
Sub copie() Dim ws As Worksheet Dim monFichier As String Dim wb As Workbook Dim chemin As String Set wb = Workbooks(ThisWorkbook.Name) chemin = ThisWorkbook.Path & "\" monFichier = Dir(chemin & "*.xlsx", vbNormal) Do While monFichier <> "" Debug.Print monFichier onglet = Split(monFichier, "-", "_")(2) ' La ligne du dessous recopie le template dans chaque nouvel onglet wb.Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = onglet Sheets("Template").Range("A1:AH127").Copy Destination:=wb.Sheets(onglet).Range("A1") For i = 8 To 93 'Jusqu'à la ligne 93 For j = 3 To 3 'sur la ligne du dessous je vais juste récupérer mes valeurs dans mes onglets. Cells(i - 4, j - 2).FormulaR1C1 = "='" & ThisWorkbook.Path & "\[" & monFichier & "]Feuil1'!R" & i & "C" & j Next Next monFichier = Dir Loop End Sub
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
cette discussion semble être la suite de https://forums.commentcamarche.net/forum/affich-36781528-afficher-les-elements-d-un-dossier
Ce serait plus sympa de garder le même identifiant d'une discussion à l'autre.
Ce serait plus sympa de garder le même identifiant d'une discussion à l'autre.
est-ce exact?