Récupération de données et boucle
Fermé
riri78
-
Modifié par pijaku le 17/05/2016 à 12:31
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 18 mai 2016 à 10:00
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 18 mai 2016 à 10:00
A voir également:
- Récupération de données et boucle
- Recuperation de données - Guide
- Supprimer les données de navigation - Guide
- Convertisseur récupération de texte - Guide
- Reinstaller windows sans perte de données - Guide
- Tnt base de données vide ✓ - Forum TNT / Satellite / Réception
3 réponses
ma variable i va de 1 à 1000 par exemple, ce sont les numéros des lignes remplies sur ma feuille importation.
et non je ne souhaite pas concaténer le contenu de plusieurs cellules dans une seule mais simplement mettre 5 cellules de la feuille importation dans 5 cellules de la feuille aideprep. Et ensuite, en appuyant sur un bouton suivant, mettre 5 autres cellules de la feuille importation (celles la ligne en dessous) dans les mêmes 5 cellules de la feuille aideprep (les autres sont donc effacées c'est pas un problème).
En fait, la feuille importation c'est mon stock de données et la feuille aideprep vient tirer 5 infos clés pour chaque ligne.
Donc Le bouton effectuera ces actions pour toutes les valeurs de i et je veux inscrire mes infos dans 5 cellule de la feuille aideprep et pas les stocker
et non je ne souhaite pas concaténer le contenu de plusieurs cellules dans une seule mais simplement mettre 5 cellules de la feuille importation dans 5 cellules de la feuille aideprep. Et ensuite, en appuyant sur un bouton suivant, mettre 5 autres cellules de la feuille importation (celles la ligne en dessous) dans les mêmes 5 cellules de la feuille aideprep (les autres sont donc effacées c'est pas un problème).
En fait, la feuille importation c'est mon stock de données et la feuille aideprep vient tirer 5 infos clés pour chaque ligne.
Donc Le bouton effectuera ces actions pour toutes les valeurs de i et je veux inscrire mes infos dans 5 cellule de la feuille aideprep et pas les stocker
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
17 mai 2016 à 14:33
17 mai 2016 à 14:33
Bonjour,
Un exemple, avec une variable de portée module Ligne As Long et un bouton sur la feuille aideprep :
Un exemple, avec une variable de portée module Ligne As Long et un bouton sur la feuille aideprep :
Dim Ligne As Long Private Sub CommandButton1_Click() Dim i As Integer Ligne = Ligne + 1 With Sheets("importations") If .Range("A" & Ligne) = "" Then Exit Sub Do While .Range("A" & Ligne + i) = .Range("A" & Ligne) i = i + 1 Loop i = i - 1 End With With Sheets("aideprep") .Range("B3") = Sheets("importations").Range("A" & Ligne) .Range("B4") = Sheets("importations").Range("C" & Ligne) .Range("B5") = Sheets("importations").Range("D" & Ligne) .Range("B6") = Sheets("importations").Range("I" & Ligne) .Range("B7") = Sheets("importations").Range("M" & Ligne) If i > 0 Then Ligne = Ligne + i .Range("C3") = Sheets("importations").Range("A" & Ligne) .Range("C4") = Sheets("importations").Range("C" & Ligne) .Range("C5") = Sheets("importations").Range("D" & Ligne) .Range("C6") = Sheets("importations").Range("I" & Ligne) .Range("C7") = Sheets("importations").Range("M" & Ligne) Else .Range("C3") = "" .Range("C4") = "" .Range("C5") = "" .Range("C6") = "" .Range("C7") = "" End If End With End Sub Sub RAZ() Ligne = 0 End Sub
Je te mets mes deux macro sur VBA
Sub Macro_tout_en_un()
'
' Macro_tout_en_un Macro
'
Dim Ligne As Long
Private Sub CommandButton1_Click()
Dim i As Integer
Ligne = Ligne + 1
With Sheets("importations")
If .Range("A" & Ligne) = "" Then Exit Sub
Do While .Range("A" & Ligne + i) = .Range("A" & Ligne)
i = i + 1
Loop
i = i - 1
End With
With Sheets("aideprep")
.Range("B3") = Sheets("importations").Range("A" & Ligne)
.Range("B4") = Sheets("importations").Range("C" & Ligne)
.Range("B5") = Sheets("importations").Range("D" & Ligne)
.Range("B6") = Sheets("importations").Range("I" & Ligne)
.Range("B7") = Sheets("importations").Range("M" & Ligne)
If i > 0 Then
Ligne = Ligne + i
.Range("C3") = Sheets("importations").Range("A" & Ligne)
.Range("C4") = Sheets("importations").Range("C" & Ligne)
.Range("C5") = Sheets("importations").Range("D" & Ligne)
.Range("C6") = Sheets("importations").Range("I" & Ligne)
.Range("C7") = Sheets("importations").Range("M" & Ligne)
Else
.Range("C3") = ""
.Range("C4") = ""
.Range("C5") = ""
.Range("C6") = ""
.Range("C7") = ""
End If
End With
End Sub
<code>
Sub RAZ()
Ligne = 0
End Sub
<code>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
17 mai 2016 à 15:56
17 mai 2016 à 15:56
1- Ligne doit être déclarée Public en entête d'un module, en dehors et au dessus de toute Sub ou Function.
2- Tu as "encapsulé" ma macro Private Sub Bouton_Click dans ta propre Sub...
Donc, dans le module de ta feuille, tu dois avoir :
[sauf si tu rattaches ta macro directement à un bouton de commande de type formulaire, auquel cas tu n'auras pas à insérer ces codes]
Dans un module standard :
2- Tu as "encapsulé" ma macro Private Sub Bouton_Click dans ta propre Sub...
Donc, dans le module de ta feuille, tu dois avoir :
[sauf si tu rattaches ta macro directement à un bouton de commande de type formulaire, auquel cas tu n'auras pas à insérer ces codes]
Private Sub CommandButton1_Click() Macro_tout_en_un End Sub
Dans un module standard :
Option Explicit Public Ligne As Long Sub Macro_tout_en_un() ' ' Macro_tout_en_un Macro ' Dim i As Integer Ligne = Ligne + 1 With Sheets("importations") If .Range("A" & Ligne) = "" Then Exit Sub Do While .Range("A" & Ligne + i) = .Range("A" & Ligne) i = i + 1 Loop i = i - 1 End With With Sheets("aideprep") .Range("B3") = Sheets("importations").Range("A" & Ligne) .Range("B4") = Sheets("importations").Range("C" & Ligne) .Range("B5") = Sheets("importations").Range("D" & Ligne) .Range("B6") = Sheets("importations").Range("I" & Ligne) .Range("B7") = Sheets("importations").Range("M" & Ligne) If i > 0 Then Ligne = Ligne + i .Range("C3") = Sheets("importations").Range("A" & Ligne) .Range("C4") = Sheets("importations").Range("C" & Ligne) .Range("C5") = Sheets("importations").Range("D" & Ligne) .Range("C6") = Sheets("importations").Range("I" & Ligne) .Range("C7") = Sheets("importations").Range("M" & Ligne) Else .Range("C3") = "" .Range("C4") = "" .Range("C5") = "" .Range("C6") = "" .Range("C7") = "" End If End With End Sub
Salit Pijaku,
j'ai tester de nouveau la macro avec ta correction mais il me dit qu'il y a un pb à la ligne With Sheets("importations") surlignée en jaune.
J'ai mis ça dans VBA
j'ai tester de nouveau la macro avec ta correction mais il me dit qu'il y a un pb à la ligne With Sheets("importations") surlignée en jaune.
J'ai mis ça dans VBA
Private Sub CommandButton1_Click()
Macro_tout_en_un
End Sub
<code>
Sub Macro_tout_en_un()
'
' Macro_tout_en_un Macro
'
Dim i As Integer
Ligne = Ligne + 1
With Sheets("importations")
If .Range("A" & Ligne) = "" Then Exit Sub
Do While .Range("A" & Ligne + i) = .Range("A" & Ligne)
i = i + 1
Loop
i = i - 1
End With
With Sheets("aideprep")
.Range("B3") = Sheets("importations").Range("A" & Ligne)
.Range("B4") = Sheets("importations").Range("C" & Ligne)
.Range("B5") = Sheets("importations").Range("D" & Ligne)
.Range("B6") = Sheets("importations").Range("I" & Ligne)
.Range("B7") = Sheets("importations").Range("M" & Ligne)
If i > 0 Then
Ligne = Ligne + i
.Range("C3") = Sheets("importations").Range("A" & Ligne)
.Range("C4") = Sheets("importations").Range("C" & Ligne)
.Range("C5") = Sheets("importations").Range("D" & Ligne)
.Range("C6") = Sheets("importations").Range("I" & Ligne)
.Range("C7") = Sheets("importations").Range("M" & Ligne)
Else
.Range("C3") = ""
.Range("C4") = ""
.Range("C5") = ""
.Range("C6") = ""
.Range("C7") = ""
End If
End With
End Sub
<code>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
>
riri78
18 mai 2016 à 09:06
18 mai 2016 à 09:06
Salut,
Tu n'as vraiment pas envie de faire le moindre effort?
Ni ici, ni sur l'autre forum?
Tu ne comprends rien aux codes que l'on te donne et, pire encore, tu ne fais aucun effort pour comprendre.
Que signifie donc, pour toi : l'indice n'appartient pas à la sélection ?
Tu n'as vraiment pas envie de faire le moindre effort?
Ni ici, ni sur l'autre forum?
Tu ne comprends rien aux codes que l'on te donne et, pire encore, tu ne fais aucun effort pour comprendre.
Que signifie donc, pour toi : l'indice n'appartient pas à la sélection ?
riri78
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
18 mai 2016 à 09:56
18 mai 2016 à 09:56
bonjour, non je n'ai aucune formation au langage vba donc c'est très difficile pour moi et je ne sais pas ce que cela signifie. et si je fais des efforts pour comprendre mais je pars de 0.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
>
riri78
18 mai 2016 à 10:00
18 mai 2016 à 10:00
Le message d'erreur l'indice n'appartient pas à la sélection signifie, entres autres, qu'un "objet" référencé dans ton code n'existe pas.
Comment, dans ton fichier Excel, est nommée la feuille "importations"?
"importation" ?
"Importation" ?
"importations" ?
"Importations" ?
"importation " ?
etc...
Place le bon nom de ta feuille dans le code donné précédemment, fais la même chose avec l'autre feuille et reviens...
Comment, dans ton fichier Excel, est nommée la feuille "importations"?
"importation" ?
"Importation" ?
"importations" ?
"Importations" ?
"importation " ?
etc...
Place le bon nom de ta feuille dans le code donné précédemment, fais la même chose avec l'autre feuille et reviens...