Instruction For...Next pour passer à la prochaine colonne [Résolu]

Signaler
Messages postés
16
Date d'inscription
dimanche 27 novembre 2011
Statut
Membre
Dernière intervention
21 février 2014
-
paolo_m
Messages postés
16
Date d'inscription
dimanche 27 novembre 2011
Statut
Membre
Dernière intervention
21 février 2014
-
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

Messages postés
27591
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 février 2020
323
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
paolo_m
Messages postés
16
Date d'inscription
dimanche 27 novembre 2011
Statut
Membre
Dernière intervention
21 février 2014

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 !!!
jordane45
Messages postés
27591
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 février 2020
323
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...
paolo_m
Messages postés
16
Date d'inscription
dimanche 27 novembre 2011
Statut
Membre
Dernière intervention
21 février 2014

Je trouve ça plus mignon que AND. :-)
Messages postés
27591
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 février 2020
323
Bonjour,

Interesse toi à l'objet : CELLS


' => cells (ligne,colonne)

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

Messages postés
27591
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 février 2020
323
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
Messages postés
16
Date d'inscription
dimanche 27 novembre 2011
Statut
Membre
Dernière intervention
21 février 2014

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.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Bonjour,
C'est ce que permet la méthode Range.copy***, utilisée avec son argument destination.

*** ton aide VBA à ouvrir à cette rubrique.
paolo_m
Messages postés
16
Date d'inscription
dimanche 27 novembre 2011
Statut
Membre
Dernière intervention
21 février 2014

Ok au temps pour moi !
J'essayai avec un code du style
Range.copy suivi de Range.paste

Merci.
Messages postés
27591
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 février 2020
323
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


Messages postés
27591
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 février 2020
323
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...??....
Messages postés
16
Date d'inscription
dimanche 27 novembre 2011
Statut
Membre
Dernière intervention
21 février 2014

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.
jordane45
Messages postés
27591
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 février 2020
323
NB : pour "citer" .. il faut utiliser <block> </block> et non
<quote></quote>.

ps: J'ai édité ton message pour le modifier.
Messages postés
16
Date d'inscription
dimanche 27 novembre 2011
Statut
Membre
Dernière intervention
21 février 2014

merci !
jordane45
Messages postés
27591
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 février 2020
323
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.
paolo_m
Messages postés
16
Date d'inscription
dimanche 27 novembre 2011
Statut
Membre
Dernière intervention
21 février 2014

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 !