[VBA] Récupération de valeurs variables
Résolu
digsaw_-
Messages postés
537
Statut
Membre
-
trankill076 Messages postés 83 Statut Membre -
trankill076 Messages postés 83 Statut Membre -
Bonjour,
Voila j'ai une boucle qui récupère dans la feuille1, colonne A les valeurs des cellules, et qui les écris ensuite sur la feuille2 colonne A jusqu'a ce qu'il n'y ai plus de valeurs:
C'est à dire colonne A feuille 1 si elle contient 46 lignes, dans la feuille2 il y aura 46 lignes..
Le problème est les valeurs des cellules.. J'aimerais récupérer les valeurs de chaques cellules pour les mettre dans la feuille2. Par exemple si la feuille 1 contient dans 1 cellule la valeur 123456 et dans la deuxieme cellule : 654321
Dans la deuxieme feuille sa sera la meme chose.. seulement ma boucle inscrit qu'il y ai 10 lignes ou 46 lignes la derniere valeur trouvée...
sachant que le nombre de lignes ne peut etre défini..
merci de votre aide !
--
Digsaw
'Avoir une section fumer dans un restaurant, c'est comme avoir une section pisseur dans une piscine !'
Voila j'ai une boucle qui récupère dans la feuille1, colonne A les valeurs des cellules, et qui les écris ensuite sur la feuille2 colonne A jusqu'a ce qu'il n'y ai plus de valeurs:
C'est à dire colonne A feuille 1 si elle contient 46 lignes, dans la feuille2 il y aura 46 lignes..
Le problème est les valeurs des cellules.. J'aimerais récupérer les valeurs de chaques cellules pour les mettre dans la feuille2. Par exemple si la feuille 1 contient dans 1 cellule la valeur 123456 et dans la deuxieme cellule : 654321
Dans la deuxieme feuille sa sera la meme chose.. seulement ma boucle inscrit qu'il y ai 10 lignes ou 46 lignes la derniere valeur trouvée...
sachant que le nombre de lignes ne peut etre défini..
merci de votre aide !
--
Digsaw
'Avoir une section fumer dans un restaurant, c'est comme avoir une section pisseur dans une piscine !'
16 réponses
-
Salut!
Je n'ai pas trop compris ca :
Dans la deuxieme feuille sa sera la meme chose.. seulement ma boucle inscrit qu'il y ai 10 lignes ou 46 lignes la derniere valeur trouvée...
Peut-tu poster ton fichier, ou un semblant de fichier sur ?
www.cijoint.fr-
Non je suis désolé je travaille a distance sur ce fichier.. pour faire un semblant je vais essayer en attendant jessaye de te réexpliquer : Ma boucle parcour la colonne A de la feuille1, qu'il y ai 10 lignes (avec des valeurs différentes) ou 45 lignes (de valeurs différentes aussi), ma boucle parcour ces lignes et inscrit les valeurs dans la feuille2 . Le problème est que ma boucle lorsqu'elle inscrit les valeurs dans la feuille2 elle n'inscrit que la derniere valeur trouvée dans la colonne A de la feuille 1 ! et j'aimerais que sa copie chaques valeur comme elle ne sont pas les mêmes..
Je vais essayer de te donner un fichier similaire.
Merci pour ton aide -
-
-
Dim derniereLigne3 As Integer Dim monTexte3 As String derniereLigne3 = Sheets(1).Range("a27").End(xlDown).Row - 27 For l = 1 To derniereLigne3 monTexte3 = Sheets(1).Range("a" & l).Value For i = 1 To derniereLigne3 Sheets(2).Range("C1").Offset(i, 0).Value = monTexte3 Next Next -
Tu ne peux pas tenter cela?
Dim derniereLigne3 As Integer Dim monTexte3 As String derniereLigne3 = Sheets(1).Range("a27").End(xlDown).Row - 27 For l = 1 To derniereLigne3 Sheets(2).Range("C1").Offset(i, 0).Value = Sheets(1).Range("a" & l).Value Next
ou bien :
Dim derniereLigne3 As Integer Dim monTexte3 As String derniereLigne3 = Sheets(1).Range("a27").End(xlDown).Row - 27 For l = 1 To derniereLigne3 Sheets(2).Cells(i,1).Value = Sheets(1).Cells(i,1).Value Next -
Alors la premiere refais comme la mienne.. sauf que la sa n'écris qu'une seule fois la derniere valeur de la colonne A feuille1
Et la deuxieme récupère bien les valeur MAIS (car il y en a toujours 1 ^^ ) elle l'écris dans la colonne A de la feuille 2 au lieu de la C bon sa c'est changeable mais sa ne supprime plus les 27 ignes Vides qu'il y a au dessus d'ou le : Row - 27 qu'il y a dans ma boucle.. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Dim derniereLigne3 As Integer Dim monTexte3 As String derniereLigne3 = Sheets(1).Range("a27").End(xlDown).Row - 27 For l = 27 To derniereLigne3 Sheets(2).Cells(i,1).Value = Sheets(1).Cells(i,1).Value Next
et comme ca? Si tu commence ta boucle à la ligne 27? -
Sa s'arrete a la 36eme valeur (alors qu'il y en a plus) et sa n'écris que la derniere (la 36eme)
-
J'ai trouvé poyurquoi sa s'arrétais on a fait une érreur toute pourrie c'est la variable i = 1 to derniereLigne on avait laissé L..
Mainteant sa marche je récupère bien les valeurs ! Mais il les inscrits avec les caces vides qu'il y a au dessus.. 25 lignes ici.. -
Sheets(2).Cells(i-27,1).Value = Sheets(1).Cells(i,1).Value
-
-
Huhuh... pas pensé... mais 27 - 27, ca fait 0...
Essai avec un -26
et si ca ne marche pas , essai:
For l = 27 To derniereLigne3 i = i - 26 Sheets(2).Cells(i,1).Value = Sheets(1).Cells(i,1).Value Next -
Je veux bien essayer mais a quoi sert le l = 27 To derniereLigne3 ? Car le l ne réapparait pas..
Et le - 26 marche seulement sa me bouffe la premeire ligne qui est le libellé de la colonne -
Excuse moi, le copier coller me fais default: remplace ton L par un i
-
Ne t'excuse pas c'est pas grave =)
j'ai donc ceci
For i = 27 To derniereLigne3
i = i - 26
Sheets(2).Cells(i, 3).Value = Sheets(1).Cells(i, 1).Value
Next
Et sa me met une erreure.. -
Oui bah je suis con... j'ai mis - 25 au lieu de - 26 carje t'ai dis que le - 26 me bouffais le libellé... -_-
des fois c'eszt en face de nous et on le vois pas ! ^^
Merci beaucou pour ton aide ! -
Bonjour,
1- suis surpris que ceci fonctionne :For i = 27 To derniereLigne3 i = i - 26 Sheets(2).Cells(i, 3).Value = Sheets(1).Cells(i, 1).Value Next
Mais si tu le dis...
2- la déclaration des variables est très importante lorsque l'on parle de code VBA. Il faut déclarer toutes les variables, et leur donner un nom explicite d'au moins 3 caractères. Les i et autres l sont à prohiber, vous en aveze eu la preuve à patauger au début de cette discussion.
A titre d'exemple :
1- une boucle sur les lignesDim Lign As Integer For Lign = 1 To 20 Cells(Lign, 1) = "Toto" & Lign Nextest immédiatement explicite. Non?
2- Sur les colonnes?Dim Col As Integer For Col = 1 To 20 Cells(2, Col) = "Toto" & Col Next
3- La dernière ligne non vide de la colonne A :Dim DernLign As Long DernLign = Sheets("Feuil1").Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
-
Ou plus simplement avec un While
i = 1 While Feuil1.Cells(i, 1) <> "" Feuil2.Cells(i, 1) = Feuil1.Cells(i, 1) i = i + 1 Wend
La boucle copie chaque cellule de la première colonne de la première feuille dans la cellule correspondante de la feuille 2 et s'arrête dès qu'elle trouve une cellule vide
Je suis d'accord avec pijaku en ce qui concerne les noms des variables