Boucle FOR +IF incompatible

piegre

XLDnaute Junior
Bonjour à tous,

J'ai tappé ce code mais il ne fonctionne pas ( pour changer ><) :

Code:
Sub traitementdonnée()
Dim i As Long


For i = 1 To 30
    
    If UCase(Left(Cells(4, i)) = "H" Then
    Sheets("PLAN").Select
    Range("Ei:Fi").Select
    Selection.Copy
    Sheets("PLAN donnée").Range("Ei:Fi").Select
    Range("Ei:Fi").Select
    ActiveSheet.Paste

    End If
Next
End Sub

C'est une boucle for avec un If imbriqué, je lis les cellules de D1 à D30 , et quand la 1ère lettre de la case est égale à H je fais un copier coller de Ei et Fi dans un autre onglet sur les cases Ei : Fi ( à terme je voudrai mettre à la place des i, la dernière cellule non vide) mais cela ne fonctionne pas.
Avez vous une idée ?
 
Dernière modification par un modérateur:

piegre

XLDnaute Junior
Re : Boucle FOR +IF incompatible

D'accord mais les autres lettres vont dans les autres colonnes de l'onglet plan données :

Si il y un a "B" --> colonne C et D
Si il y a un "C" --> colonne A et B
Si il y a un "D" --> colonne G et H
Si il y a un "F" --> colonne G et H
Si il y a un "A" --> colonne I et J
 

Staple1600

XLDnaute Barbatruc
Re : Boucle FOR +IF incompatible

Bonsoir à tous

Si j'ai bien compris, une autre façon de faire.
NB:Il faut que la feuille active soit la feuille nommé PLAN, avant de lancer la macro
VB:
Sub a()
Dim c As Range, t, x%
'tableau avec les colonnes de destination
t = Array("C", "A", "G", "E", "I")
For Each c In Columns(1).SpecialCells(xlCellTypeConstants)
'BCDFA = chaine dans laquelle on cherchera le 1er caractère de c
If InStr(1, "BCDFA", Left(c.Text, 1), vbTextCompare) > 0 Then
'x renvoie la position du caractère dans la chaine
x = InStr(1, "BCDFA", Left(c.Text, 1), vbTextCompare)
't(x-1) renvoie la lettre de colonne de destination
Sheets("PLAN donnée").Cells(Rows.Count, t(x - 1)).End(xlUp)(2).Resize(, 2).Value = c.Offset(, 4).Resize(, 2).Value
'on "recopie" les données sur la feuille Plan donnée
End If
Next
End Sub
 

piegre

XLDnaute Junior
Re : Boucle FOR +IF incompatible

Bonjour stapie, ton code est bien , sauf que j'ai 5 onglet où ce traitement s'effectue, le code a JM fonctionne mieux car je l'ai adapté sur les autres onglets mais avec des lettres différentes.Mais je garde quand même le tien ;)
 
Dernière modification par un modérateur:

piegre

XLDnaute Junior
Re : Boucle FOR +IF incompatible

Je ressort ce sujet car j'ai un nouveau problème avec ce code.

A la place d'une lettre je voudrais recherché un groupe de mot :

Si on trouve dans la colonne G "n 15 A TRAVERS TOUT" --> on copie colle les 2 cases à gauche dans la colonne C et D d'un autre onglet.

J'ai essayé comme ça :
Code:
Dim Cell As Range
Worksheets("PLAN donnée").Range("B3:K1000").ClearContents
With Sheets("PLAN")
        For Each Cell In .Range("G1:G" & .Range("G655536").End(xlUp).Row)
            Select Case UCase(Left(Cell.Offset(0, 0), 1))
                Case "n 15 A TRAVERS TOUT"
                    Sheets("PLAN").Range(Cell.Offset(0, -2), Cell.Offset(0, -1)).Copy Destination:=Sheets("PLAN donnée").Range("F" & Cell.Row + 2)

            End Select
        Next
    End With
.

Mais il ne fonctionne pas bien entendu.
 

Discussions similaires

Statistiques des forums

Discussions
314 647
Messages
2 111 529
Membres
111 190
dernier inscrit
clmtj