A voir également:
- Vba sélectionner plusieurs colonnes
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Comment faire des colonnes sur word - Guide
- Selectionner texte sur pdf - Guide
- Inverser deux colonnes excel - Guide
- Figer des colonnes excel - Guide
2 réponses
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
645
16 mai 2009 à 01:23
16 mai 2009 à 01:23
Bonjour,
Déja au niveau de la syntaxe il faut écrire ceci :
Ensuite il manque du code avant et aprés pour que l'on puisse juger si cela va donner le bon résultat. En particulier je suppose qu'il y a une boucle sur toutes les colonnes i et un paste ensuite. Mais l'utilisation de ActiveCell me parait curieux. Il me semble qu'il faudrait que la cellule active soit Cells(1,i) en amont de ce code.
A+
Déja au niveau de la syntaxe il faut écrire ceci :
If Cells(2, i).Value = 178.6 Then Range(ActiveCell, ActiveCell.End(xlDown)).Select li = Selection.Rows.Count Range(Cells(1, i), Cells(li, i + 1)).Select Selection.Copy End If
Ensuite il manque du code avant et aprés pour que l'on puisse juger si cela va donner le bon résultat. En particulier je suppose qu'il y a une boucle sur toutes les colonnes i et un paste ensuite. Mais l'utilisation de ActiveCell me parait curieux. Il me semble qu'il faudrait que la cellule active soit Cells(1,i) en amont de ce code.
A+
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
645
16 mai 2009 à 19:46
16 mai 2009 à 19:46
Bonjour,
Oui à priori c'est la syntaxe Columns(i, j).Select qui n'est pas correcte.
Il faut essayer cette syntaxe : Range(Columns(i), Columns(j)).Select
Je confirme que tu écrases chaque fois les valeurs.
Regardes un exemple de code qui fonctionne :
A+
Oui à priori c'est la syntaxe Columns(i, j).Select qui n'est pas correcte.
Il faut essayer cette syntaxe : Range(Columns(i), Columns(j)).Select
Je confirme que tu écrases chaque fois les valeurs.
Regardes un exemple de code qui fonctionne :
Sub test() Dim i As Integer, j As Integer, Numcol As Integer, Numcol2 As Integer Dim k As Integer, l As Integer k = 1 l = 1 For i = 1 To 150 Sheets("VIS-NIR").Select j = i + 1 Range("A1").Select Application.CutCopyMode = False If Cells(2, i).Value = "178,6" Then Range(Columns(i), Columns(j)).Select Selection.Copy Sheets("VIS").Select Cells(1, k).Select ActiveSheet.Paste k = k + 2 End If If Cells(2, i).Value = "646,42" Then Range(Columns(i), Columns(j)).Select Selection.Copy Sheets("NIR").Select Cells(1, l).Select ActiveSheet.Paste l = l + 2 End If Next i End Sub
A+
16 mai 2009 à 19:04
Le code a quelque peu évolué depuis ce post, c'est maintenant:
Sub test()
Dim i As Integer, j As Integer, Numcol As Integer, Numcol2 As Integer
For i = 1 To 150
Sheets("VIS-NIR").Select
j = i + 1
Range("A1").Select
Application.CutCopyMode = False
If Cells(2, i).Value = "178,6" Then
Columns(i, j).Select
Selection.Copy
Sheets("VIS").Select
Range("A1").Select
ActiveSheet.Paste
End If
If Cells(2, i).Value = "646,42" Then
Columns(i, j).Select
Selection.Copy
Sheets("NIR").Select
Range("A1").Select
ActiveSheet.Paste
End If
Next i
End Sub
J'y ajouterais une procédure permettant de ne pas copier constamment chaque nouvelle série de valeur sur les anciennes, mais ça ne me pose pas de problème, je l'ai déjà fait.
Mon soucis est donc que je voudrais copier deux colonnes dans un onglet différent en fonction de la valeur de la deuxième ligne de la première colonne. Le problème, c'est que là, j'obtiens une erreur d'exectution 1004 : "Erreur définie par l'application ou par l'objet". Le debugger me surligne la ligne de sélection des colonnes. J'ai essayé pas mal de choses, dont des trucs vraiment pas beaux à voir (et forcément totalement ineficaces), mais je n'arrive pas à voir où est le soucis.
Cordialement,