Instruction For...Next pour passer à la prochaine colonne

Résolu
paolo_m Messages postés 16 Date d'inscription dimanche 27 novembre 2011 Statut Membre Dernière intervention 21 février 2014 - 21 févr. 2014 à 12:29
paolo_m Messages postés 16 Date d'inscription dimanche 27 novembre 2011 Statut Membre Dernière intervention 21 février 2014 - 21 févr. 2014 à 15:38
Bonjour,
Via l'instruction for...next j'arrive à copier des cellules d'une feuille vers une autre si elles sont dans la même colonne.

Je voudrais copier des cellules qui sont sur la même ligne mais je n'arrive pas à incrémenter mon instruction pour qu'elle passe à la colonne suivante.

Avez vous un axe de travail à me proposer, je ne recherche pas forcement une ligne de code comme réponse, ce que je veux dire c'est que ce n'est pas forcément la ligne de code qui me fera comprendre pourquoi.
Ayant cherché sur le forum je n'ai pas trouvé de post qui me mettrai sur la bonne voie.

9 réponses

jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
Modifié par jordane45 le 21/02/2014 à 14:29
Worksheets("feuil2").Range("I"&(a+m):"AM"&(a+m)).Value = _
Worksheets("feuil1").Range("G5:AK5").Value


Erreur de syntaxe... oui.. vu comment tu as concaténé tes variables.. tu as oublié de mettre les deux points entre guillemets..

Worksheets("feuil2").Range("I" & (a+m) & ":AM" & (a+m)).Value = _
Worksheets("feuil1").Range("G5:AK5").Value


Edit: pour bien comprendre :
MaRange = "I" & (a+m) & ":AM" & (a+m)
Msgbox MaRange

'en prenant : a+m = 5 par exemple.. tu obtiendras :
' MaRange => "I5:AM5"



Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
1
paolo_m Messages postés 16 Date d'inscription dimanche 27 novembre 2011 Statut Membre Dernière intervention 21 février 2014
Modifié par paolo_m le 21/02/2014 à 15:04
Merci !!!
Cela m'a permis de comprendre l'utilité de l'esperluette (en fouillant dans l'aide d'office pour savoir ce qu'est un concatener) !
Coule !!!
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
21 févr. 2014 à 15:07
esperluette ... c'est rare d'entendre ce terme.. en général on entend plus souvent "ET commercial" ou "AND".

Ce symbole, utilisé dans certains langages comme le VB permet (entre autre) de faire la concaténation de variables (comme tu as pu le voir).


...par contre... N'oublie pas clore la discussion stp...
0
paolo_m Messages postés 16 Date d'inscription dimanche 27 novembre 2011 Statut Membre Dernière intervention 21 février 2014
21 févr. 2014 à 15:38
Je trouve ça plus mignon que AND. :-)
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
21 févr. 2014 à 12:31
Bonjour,

Interesse toi à l'objet : CELLS


' => cells (ligne,colonne)

 for i=1 to 10
   debug.print cells(1,i).value
 next

0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
Modifié par jordane45 le 21/02/2014 à 12:40
PS:

par contre :
je voudrais copier des cellules qui sont sur la même ligne mais je n'arrive pas à incrémenter mon instruction pour qu'elle passe à la colonne suivante.
Pourquoi passer par une boucle pour copier tes cellules alors que tu pourrais directement copier la RANGE les concernants ?

Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
0
paolo_m Messages postés 16 Date d'inscription dimanche 27 novembre 2011 Statut Membre Dernière intervention 21 février 2014
Modifié par paolo_m le 21/02/2014 à 13:01
Pour copier une cellule j'utilise ce code
Sheets("Feuil2").Range("C" & (a + m)).Value = _
    Sheets("Feuil1").Range("F12").Value

' a et m ont une valeur qui varie en fonction de l année et du mois choisi


Par contre lorsque je veux copier plusieurs cellules (ou valeurs de cellule), genre:
les cellules de Feuil1 de G5 à AK5 (31 colonnes)
pour les coller dans Feuil2 de I à AM (31 colonnes aussi)
mais avec un numéro de ligne qui peut changer cela ne fonctionne plus.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 févr. 2014 à 13:10
Bonjour,
C'est ce que permet la méthode Range.copy***, utilisée avec son argument destination.

*** ton aide VBA à ouvrir à cette rubrique.
0
paolo_m Messages postés 16 Date d'inscription dimanche 27 novembre 2011 Statut Membre Dernière intervention 21 février 2014
21 févr. 2014 à 13:50
Ok au temps pour moi !
J'essayai avec un code du style
Range.copy suivi de Range.paste

Merci.
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
21 févr. 2014 à 13:19
Si tu ne cherches pas à COPIER (c'est à dire en utilisant COPY) mais juste à récupérer la valeur de tes cellules tu peux utiliser :
' Pa rexemple:
Range("A15:G15").Value = Range("A5:G5").Value
'peut s'écrire aussi:
Range(Cells(15, 1), Cells(15, 7)).Value = Range(Cells(5, 1), Cells(5, 7)).Value


0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
21 févr. 2014 à 13:23
Tu peux aussi nous expliquer ce que tu veux dire par :
lorsque je veux copier plusieurs cellules (ou valeurs de cellule), genre:
les cellules de Feuil1 de G5 à AK5 (31 colonnes)
pour les coller dans Feuil2 de I à AM (31 colonnes aussi)
mais avec un numéro de ligne qui peut changer cela ne fonctionne plus.
???

Si ma réponse précédente ne te permet pas de résoudre ton souci.. merci de nous montrer le code que tu essayes de mettre en place..

Surtout que là tu nous parles de numéro de ligne et que dans ta question tu parles de numéro de colonne...??....
0
paolo_m Messages postés 16 Date d'inscription dimanche 27 novembre 2011 Statut Membre Dernière intervention 21 février 2014
Modifié par jordane45 le 21/02/2014 à 14:30
Voici une partie de mon code :
Option Explicit
Public a As Integer, m As Integer, tot As Integer, travail As Integer, ticket As Integer, conge As Integer, repos As Integer, arret As Integer, vac As Integer

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

m = Month("01 " & Range("F3").Text & " 2000") - 1
a = (Range("E3").Value Mod 2012) + 3 + (12 * (Range("E3").Value - 2012))


travail = Sheets("Feuil1").Range("F12").Value
repos = Sheets("feuil1").Range("F13").Value
conge = Sheets("feuil1").Range("F14").Value
arret = Sheets("feuil1").Range("F15").Value
vac = Sheets("feuil1").Range("F20").Value

If Target.Address = "$AL$6" Then
    Range("G5:AK5").ClearContents
    End If
    
If Target.Address = "$AL$4" Then
    MsgBox ("Rappel des données impossible pour le moment")
End If

If Target.Address = "$AL$5" Then
    Worksheets("feuil1").Range("G5:AK5").Copy _
    Destination:=Worksheets("feuil2").Range("I" & (a + m))


Comme le dit jordane45
Si tu ne cherches pas à COPIER (c'est à dire en utilisant COPY) mais juste à récupérer la valeur de tes cellules tu peux utiliser :
' Pa rexemple:
Range("A15:G15").Value = Range("A5:G5").Value
'peut s'écrire aussi:
Range(Cells(15, 1), Cells(15, 7)).Value = Range(Cells(5, 1), Cells(5, 7))
J'ai tenté
Worksheets("feuil2").Range("I"&(a+m):"AM"&(a+m)).Value = _
Worksheets("feuil1").Range("G5:AK5").Value

Erreur de syntaxe !

C'est effectivement la valeur des cellules qui m'intéresse.
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
21 févr. 2014 à 14:33
NB : pour "citer" .. il faut utiliser <block> </block> et non
<quote></quote>.

ps: J'ai édité ton message pour le modifier.
0
paolo_m Messages postés 16 Date d'inscription dimanche 27 novembre 2011 Statut Membre Dernière intervention 21 février 2014
21 févr. 2014 à 14:48
merci !
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
21 févr. 2014 à 14:54
Bonjour,

Merci, lorsque tes questions trouvent une réponse sur ce forum..., de penser systématiquement à mettre la discussion en RESOLUE...
( pour cela il faut cliquer sur le lien se trouvant sous le titre de ta question : <<MARQUER COMME RESOLU>> )
Merci.
0
paolo_m Messages postés 16 Date d'inscription dimanche 27 novembre 2011 Statut Membre Dernière intervention 21 février 2014
21 févr. 2014 à 15:14
Ne t'inquiète pas pour le <<MARQUER COMME RESOLU>>, je n'ai pas ta réactivité c'est tout !
En faisant un mélange entre For...Next et Cells je vais pouvoir continuer sur mon petit bout de chemin.

Un grand merci à tous !
0
Rejoignez-nous