Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

for next à partir des valeurs d'une requête Access

3 réponses
Avatar
Hugo Degueldre
Bonjour,
A partir d'une requête Access comprenant deux champs (pour commencer)
le premier serait la référence d'une cellule dans laquelle je souhaite
placer du texte
le second est le texte en question

1, 1 pierre
4, 2 paul
6, 3 jacques
8, 10 joseph
10, 11 denis

Je souhaite créer une boucle qui me placerais "pierre" dans la cellule A1 de
la Feuil2, "joseph" dans la D2de la Feuil2 et ainsi de suite.

Je chipote depuis une heure et en faisant ceci :

Public Sub test()
Dim compteur
For compteur = 1 To 5
Application.Goto (Worksheets("Feuil1").Cells(compteur, 2))
Selection.Copy
Dim celluleRecherchée
celluleRecherchée = Worksheets("Feuil1").Cells(compteur, 1).Value
MsgBox celluleRecherchée
Application.Goto (Worksheets("Feuil2").Cells(celluleRecherchée))

ActiveSheet.Paste

Next compteur
End Sub

cela me place ce que souhaite dans la bonne colonne mais toujours sur la
ligne 1.
C'est un bon début mais quelqu'un pourrait-il me donner le code (ou me
renseigner l'endroit où chercher) qui ferait ceci :

pour chaque cellule de la colonne B de la Feuil1, en extraire la valeur
puis repérer l'adresse de la cellule voisine à gauche
atteindre cette cellule sur la Feuil2
y coller la valeur extraite
faire la boucle.

Ne hurlez pas, je viens de mettre mon nez dans VB poue Excel pour la 1ère
fois.
Je croyais travailler par analogie avec ce que je sais d'Access mais
manifestement c'est plus compliqué que prévu.
Merci d'avance
hd

3 réponses

Avatar
AV
Y a un truc qui me paraît pas clair :
1, 1 --> A1 --> pierre... je comprends
mais que "joseph" corresponde à 8, 10 .là je pige plus la logique !

En supposant que tu te sois trompé dans l'énoncé de la question .
En A1:A5 toi à des chaînes sous la forme :
nombre/virgule/espace/nombre
représentant la colonne et la ligne

Sub zzz()
For Each c In Sheets("Feuil1").[A1:A5]
y = c.Address
rw = Evaluate("mid(" & y & ",finc("",""," & y & ")+2,9^9)") * 1
col = Evaluate("left(" & y & ",find("",""," & y & ")-1)") * 1
Sheets("Feuil2").Cells(rw, col).Value = c.Offset(0, 1).Value
Next
End Sub

AV

"Hugo Degueldre" a écrit dans le message news:
3f3a4770$0$312$
Bonjour,
A partir d'une requête Access comprenant deux champs (pour commencer)
le premier serait la référence d'une cellule dans laquelle je souhaite
placer du texte
le second est le texte en question

1, 1 pierre
4, 2 paul
6, 3 jacques
8, 10 joseph
10, 11 denis

Je souhaite créer une boucle qui me placerais "pierre" dans la cellule A1 de
la Feuil2, "joseph" dans la D2de la Feuil2 et ainsi de suite.

Je chipote depuis une heure et en faisant ceci :

Public Sub test()
Dim compteur
For compteur = 1 To 5
Application.Goto (Worksheets("Feuil1").Cells(compteur, 2))
Selection.Copy
Dim celluleRecherchée
celluleRecherchée = Worksheets("Feuil1").Cells(compteur, 1).Value
MsgBox celluleRecherchée
Application.Goto (Worksheets("Feuil2").Cells(celluleRecherchée))

ActiveSheet.Paste

Next compteur
End Sub

cela me place ce que souhaite dans la bonne colonne mais toujours sur la
ligne 1.
C'est un bon début mais quelqu'un pourrait-il me donner le code (ou me
renseigner l'endroit où chercher) qui ferait ceci :

pour chaque cellule de la colonne B de la Feuil1, en extraire la valeur
puis repérer l'adresse de la cellule voisine à gauche
atteindre cette cellule sur la Feuil2
y coller la valeur extraite
faire la boucle.

Ne hurlez pas, je viens de mettre mon nez dans VB poue Excel pour la 1ère
fois.
Je croyais travailler par analogie avec ce que je sais d'Access mais
manifestement c'est plus compliqué que prévu.
Merci d'avance
hd





Avatar
Hugo Degueldre
Bonjour,
Tu avais bien déduit.
C'est ça que je cherchais, merci.
Avec une petite correction : Find au lieu de find et finc, aux lignes 4 et
5.
Connais-tu un site d'initiation à ce genre de problèmes (et solutions) ?
Encore merci et bonne journée
hd

"AV" a écrit dans le message news:
#
Y a un truc qui me paraît pas clair :
1, 1 --> A1 --> pierre... je comprends
mais que "joseph" corresponde à 8, 10 .là je pige plus la logique !

En supposant que tu te sois trompé dans l'énoncé de la question .
En A1:A5 toi à des chaînes sous la forme :
nombre/virgule/espace/nombre
représentant la colonne et la ligne

Sub zzz()
For Each c In Sheets("Feuil1").[A1:A5]
y = c.Address
rw = Evaluate("mid(" & y & ",finc("",""," & y & ")+2,9^9)") * 1
col = Evaluate("left(" & y & ",find("",""," & y & ")-1)") * 1
Sheets("Feuil2").Cells(rw, col).Value = c.Offset(0, 1).Value
Next
End Sub

AV

"Hugo Degueldre" a écrit dans le message
news:

3f3a4770$0$312$
Bonjour,
A partir d'une requête Access comprenant deux champs (pour commencer)
le premier serait la référence d'une cellule dans laquelle je souhaite
placer du texte
le second est le texte en question

1, 1 pierre
4, 2 paul
6, 3 jacques
8, 10 joseph
10, 11 denis

Je souhaite créer une boucle qui me placerais "pierre" dans la cellule
A1 de


la Feuil2, "joseph" dans la D2de la Feuil2 et ainsi de suite.

Je chipote depuis une heure et en faisant ceci :

Public Sub test()
Dim compteur
For compteur = 1 To 5
Application.Goto (Worksheets("Feuil1").Cells(compteur, 2))
Selection.Copy
Dim celluleRecherchée
celluleRecherchée = Worksheets("Feuil1").Cells(compteur, 1).Value
MsgBox celluleRecherchée
Application.Goto (Worksheets("Feuil2").Cells(celluleRecherchée))

ActiveSheet.Paste

Next compteur
End Sub

cela me place ce que souhaite dans la bonne colonne mais toujours sur la
ligne 1.
C'est un bon début mais quelqu'un pourrait-il me donner le code (ou me
renseigner l'endroit où chercher) qui ferait ceci :

pour chaque cellule de la colonne B de la Feuil1, en extraire la
valeur


puis repérer l'adresse de la cellule voisine à gauche
atteindre cette cellule sur la Feuil2
y coller la valeur extraite
faire la boucle.

Ne hurlez pas, je viens de mettre mon nez dans VB poue Excel pour la
1ère


fois.
Je croyais travailler par analogie avec ce que je sais d'Access mais
manifestement c'est plus compliqué que prévu.
Merci d'avance
hd









Avatar
AV
Avec une petite correction : Find au lieu de find et finc, aux lignes 4 et 5.


** Je me demande bien d'où sort ce "finc" en ligne 4 ...... !

Connais-tu un site d'initiation à ce genre de problèmes (et solutions) ?
** Ici ! ;-)

Si tu es spécifiquement intéressé par la méthode Evaluate, tu peux aller
jetter un oeil là :
http://disciplus.simplex.free.fr/classeursxl/av-evaluate.zip

AV