Aide Macro

G

Guillaume

Guest
Bonjour,

Je cherche à écrire une macro (c'est la première fois) qui pourrait selectionner une colonne (j'ai trouvé comment) afin de comparer les valeurs des cellules qui s'y trouvent avec une valeur de référence et copier celle qui sont équivalentes dans une autre colonne mais je ne sais pas comment faire pour comparer et copier ces valeurs.

Pouvez vous m'aider ?

Merci
 

Pièces jointes

  • exemple_macro.zip
    2 KB · Affichages: 12
A

albert

Guest
bonjour Guillaume,
voici un début de code qui peut t'aider
Sub cherche()

With Worksheets("Feuil1").Range("C1:C10")
Set c = .Find("1 - 1", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Offset(0, 1).Copy
Range("G1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With


End Sub
 
H

Hervé

Guest
Bonjour

Public Sub vev()
Dim c As Range
Dim ligne As Integer, colonne As Integer

'initialisation de la variable ligne
ligne = 16
'pour chaque cellule de la colonne C de la ligne 1 à la derniere non vide
For Each c In Range("c1:c" & Range("c65000").End(xlUp).Row)
'Si dans la cellule on trouve "1 - 1"
If Not c.Find("1 - 1") Is Nothing Then
'alors pour colonne = 1 jusqu'à 4
For colonne = 1 To 4
' a la cellule (16,1) on place les valeurs de la ligne contenant "1 - 1"
Cells(ligne, colonne) = Cells(c.Row, colonne)
Next colonne
'incrémentation de la ligne, sinon on écrit toujours sur la même
ligne = ligne + 1
End If
Next c
End Sub

les données s'inscrivent à partir de la ligne 16 et copie l'ensemble de la ligne.

Salut
Hervé
 
G

Guillaume

Guest
Merci Hervé,

dans ton exemple le copier-coller des cellules commence ligne 16 mais si je veux que ça soit coller plutôt dans la colonne 6 à la ligne 2 quelle est la ligne de commande que je dois rajouter ou modifier ?

Public Sub vev()
Dim c As Range
Dim ligne As Integer, colonne As Integer

'initialisation de la variable ligne ICI JE MODIFIE COMMENT ?
ligne = 16, COLONNE = 5 ???
'pour chaque cellule de la colonne C de la ligne 1 à la derniere non vide
For Each c In Range("c1:c" & Range("c65000").End(xlUp).Row)
'Si dans la cellule on trouve "1 - 1"
If Not c.Find("1 - 1") Is Nothing Then
'alors pour colonne = 1 jusqu'à 4
For colonne = 1 To 4
' a la cellule (16,1) on place les valeurs de la ligne contenant "1 - 1"
Cells(ligne, colonne) = Cells(c.Row, colonne)
Next colonne
'incrémentation de la ligne, sinon on écrit toujours sur la même
ligne = ligne + 1
End If
Next c
End Sub
 
H

Hervé

Guest
bonsoir

Public Sub vev()
Dim c As Range
Dim ligne As Integer, colonne As Integer

'initialisation de la variable ligne
ligne = 2
'pour chaque cellule de la colonne C de la ligne 1 à la derniere non vide
For Each c In Range("c1:c" & Range("c65000").End(xlUp).Row)
'Si dans la cellule on trouve "1 - 1"
If Not c.Find("1 - 1") Is Nothing Then
'alors pour colonne = 6 jusqu'à 9
For colonne = 6 To 9
' a la cellule (16,1) on place les valeurs de la ligne contenant "1 - 1"
Cells(ligne, colonne) = Cells(c.Row, colonne - 5)
Next colonne
'incrémentation de la ligne, sinon on écrit toujours sur la même
ligne = ligne + 1
End If
Next c
End Sub


désolé pour le coté non pédagoque de ma démarche , je reviendrait dès que possible.

Salut
hervé

Salut
Hervé
 
H

Hervé

Guest
re

je reviens (mes problèmes de connexion étant résolu ) :

Dans cette macro le pivot c'est le c de la boucle for each c

on renvoi les donnees de la ligne c (c.row) vers les cellules qui on été passé en variable:

ligne : que l'on initialise au départ (ligne = 2) puis que l'on incrémente : ligne = ligne +1

colonne : on boucle for colonne = 6 to 9, ainsi on évite le moche
....c.offset(0,1)
....c.offset(0,-1)
.....etc


AU SECOURS je sais pas expliquer , m'en veut pas guillaume, mais vraiment je suis pas pédago pour 2 sous .

Si quelqu'un sait mieux faire que moi qu'il ne se gêne pas....

Salut
Hervé
 

Discussions similaires

Réponses
21
Affichages
337

Statistiques des forums

Discussions
312 400
Messages
2 088 085
Membres
103 710
dernier inscrit
amin Saadaoui